1. 程式人生 > >JDBC連接MySQL數據庫基礎

JDBC連接MySQL數據庫基礎

insert statement 中間件 語言 標準 mysql數據庫 查看表 table nbsp

主要內容

  • MySQL的基本操作和基本SQL語法
  • 使用JDBC進行MySQL數據庫的開發
  • 使用DriverManager、Connection、PreparedStatement、ResultSet對數據庫進行增刪改查操作


JDBC簡介

  JDBC(Java Database Connectivity)提供了一種與平臺無關的用於執行SQL語句的標準Java API,可以方便地實現多種關系型數據庫的統一操作,它由一組用Java語言編寫的接口和類組成。

  JDBC本身提供的是一套數據庫操作標準,而這些標準又需要數據庫廠商實現,所以針對每一個數據庫廠商都會提供一個JDBC驅動程序,目前比較常見的JDBC驅動程序可分為以下4類:

  1. JDBC-ODBC橋驅動。直接利用微軟的ODBC(Open Database Connectivity)進行數據庫的連接操作,但是這種操作性能較低。
  2. JDBC本地驅動。直接使用各個數據庫生產商提供的JDBC驅動程序,但是因為其只能應用在特定的數據庫上,會喪失程序的可移植性,不過這樣操作的性能較高。
  3. JDBC網絡驅動。將JDBC轉換為與DBMS無關的網絡協議,之後又被某個服務器轉換為一種DBMS協議。這種網絡服務器中間件能夠將它的純Java客戶機連接到多種不同的數據庫上,所用的具體協議取決於提供者。通常,這是最靈活的JDBC驅動程序。
  4. 本地協議純JDBC驅動。將JDBC調用直接轉換為DBMS所使用的網絡協議。這將允許從客戶機器上直接調用DBMS服務器。


MySQL數據庫

  MySQL是一個小型關系型數據庫管理系統。在MySQL官網下載安裝包,安裝好之後配置好環境變量就可以使用了。

MySQL常用命令
連接MySQL數據庫 mysql -u 用戶名 -p;然後輸入密碼
創建數據庫 create database 數據庫名稱;
刪除數據庫 drop database 數據庫名稱;
使用數據庫 use 數據庫名稱;
創建數據庫表 create table 表名稱(字段名稱 字段類型 默認值 約束…………);
刪除數據庫表 drop table 表名稱;
查看表結構 desc 表名稱;
查看全部數據庫 show databases;
查看一個數據庫的全部表 show tables;


SQL語法基礎

  SQL(Structured Query Language,結構查詢語言)是一個功能強大的數據庫語言。SQL通常用於與數據庫的通信。SQL功能強大,概括起來可以分成以下幾組:DML(Data Manipulation Language,數據操作語言),用於檢索或者修改數據;DDL(Data Definition Language,數據定義語言),用於定義數據的結構,如創建、修改或者刪除數據庫對象;DCL(Data Control Language,數據控制語言),用於定義數據庫用戶的權限。

SQL常用語法
增加數據 insert into 表名稱【(字段1,字段2,……,字段n)】 values(值1,值2,……,值n);(【】表示可選項)
刪除數據 delete from 表名稱 【刪除條件】;
更新數據 update 表名稱 set 字段1=值1,……,字段n=值n 【where 更新條件】;
查詢數據

select {*|column alias}

from 表名稱 別名

【where 條件】

【limit 開始行,取出的數據個數】;

  需要註意的是,在增加數據時,如果是字符串,則一定要用“‘”括起來;如果是日期,則按照標準的日期格式進行插入(MySQL中的日期使用yyyy-mm-dd的格式保存,所以在插入數據時,必須按照此種格式插入)。

  在刪除數據時,最好指定刪除的條件,如果沒有指定,則表示刪除一張表中的全部數據。

  與刪除語句一樣,修改時也需要指定修改條件,否則數據表的全部記錄都將被修改。


連接數據庫

  要使用MySQL數據庫進行開發,首先去官網下載驅動,然後將MySQL數據庫的驅動程序配置到classpath中。

  加載數據庫驅動程序是JDBC操作的第一步,由於已經將數據庫的驅動程序直接配置到了classpath中,所以,此時可以直接進行加載。MySQL中的數據庫驅動路徑是com.mysql.jdbc.Driver。得到驅動程序路徑之後,即可利用Class類進行驅動程序的加載。

  連接及關閉數據庫。如果數據庫驅動程序可以正常加載,就可以利用DriverManager類連接數據庫。在DriverManager中,提供的主要操作就是得到一個數據庫的連接,getConnection()方法就是取得連接對象,此方法返回的是Connection對象,不管使用哪種方式連接,都必須提供一個數據庫的連接地址。

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.SQLException;
 4 
 5 public class ExampleDatabase {
 6     //定義MySQL的數據庫驅動程序
 7     public static final String DBDRIVER = "com.mysql.jdbc.Driver";
 8     //定義MySQL數據庫的連接地址
 9     public static final String DBURL = "jdbc:mysql://localhost:3306/test";
10     //MySQL數據庫的連接用戶名
11     public static final String DBUSER = "root";
12     //MySQL數據庫的連接密碼
13     public static final String DBPASS = "root";
14     public static void main(String[] args) {
15         Connection con = null;
16         try {
17             //加載驅動程序
18             Class.forName(DBDRIVER);
19         }
20         catch (ClassNotFoundException e) {
21             e.printStackTrace();
22         }
23         try {
24             //連接MySQL數據庫時,要寫上連接的用戶名和密碼
25             con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
26         }
27         catch (SQLException e) {
28             e.printStackTrace();
29         }
30         System.out.println(con);
31         try {
32             //關閉數據庫
33             con.close();
34         }
35         catch (SQLException e) {
36             e.printStackTrace();
37         }
38     }
39 }

執行數據庫的更新操作

  數據庫連接後,就可以進行數據庫的具體操作,要使用Statement接口完成,此接口可以使用Connection接口中提供的createStatement()方法實例化。

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.SQLException;
 4 import java.sql.Statement;
 5 
 6 public class ExampleDatabase {
 7     //定義MySQL的數據庫驅動程序
 8     public static final String DBDRIVER = "com.mysql.jdbc.Driver";
 9     //定義MySQL數據庫的連接地址
10     public static final String DBURL = "jdbc:mysql://localhost:3306/test";
11     //MySQL數據庫的連接用戶名
12     public static final String DBUSER = "root";
13     //MySQL數據庫的連接密碼
14     public static final String DBPASS = "root";
15     public static void main(String[] args) {
16         Connection con = null;
17         Statement stmt = null;
18         //數據庫插入語句
19         String insertSQL = "insert into user (id, name, age) values (3, ‘key‘, 23)";
20         //數據庫修改語句
21         String alterSQL = "update user SET name=‘jon‘ where id=8";
22         //數據庫刪除語句
23         String deleteSQL = "delete from user where id=5";
24         try {
25             //加載驅動程序
26             Class.forName(DBDRIVER);
27         }
28         catch (ClassNotFoundException e) {
29             e.printStackTrace();
30         }
31         try {
32             //連接MySQL數據庫時,要寫上連接的用戶名和密碼
33             con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
34             //實例化Statement對象
35             stmt = con.createStatement();
36             //執行數據庫更新操作
37             stmt.executeUpdate(insertSQL);
38             stmt.executeUpdate(alterSQL);
39             stmt.executeUpdate(deleteSQL);
40         }
41         catch (SQLException e) {
42             e.printStackTrace();
43         }
44         System.out.println(con);
45         try {
46             //關閉操作
47             stmt.close();
48             //關閉數據庫
49             con.close();
50         }
51         catch (SQLException e) {
52             e.printStackTrace();
53         }
54     }
55 }

數據庫查詢操作

  使用SQL的select語句可以查詢出數據庫的全部結果,在JDBC的操作中數據庫的所有查詢記錄將使用ResultSet進行接收,並使用ResultSet顯示內容。要進行數據庫查詢操作,需要使用Statement接口定義的executeQuery()方法,此方法返回值類型就是一個ResultSet的對象,此對象中存放了所有的查詢結果。

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.SQLException;
 4 import java.sql.Statement;
 5 import java.sql.ResultSet;
 6 
 7 public class ExampleDatabase {
 8     //定義MySQL的數據庫驅動程序
 9     public static final String DBDRIVER = "com.mysql.jdbc.Driver";
10     //定義MySQL數據庫的連接地址
11     public static final String DBURL = "jdbc:mysql://localhost:3306/test";
12     //MySQL數據庫的連接用戶名
13     public static final String DBUSER = "root";
14     //MySQL數據庫的連接密碼
15     public static final String DBPASS = "root";
16     public static void main(String[] args) {
17         Connection con = null;
18         Statement stmt = null;
19         ResultSet rs = null;
20         //數據庫查詢語句
21         String sql = "select id , name, age from user";
22         try {
23             //加載驅動程序
24             Class.forName(DBDRIVER);
25         }
26         catch (ClassNotFoundException e) {
27             e.printStackTrace();
28         }
29         try {
30             //連接MySQL數據庫時,要寫上連接的用戶名和密碼
31             con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
32             //實例化Statement對象
33             stmt = con.createStatement();
34             //執行數據庫查詢操作
35             rs = stmt.executeQuery(sql);
36             while (rs.next()) {
37                 int id = rs.getInt("id");
38                 String name = rs.getString(2);
39                 int age = rs.getInt("age");
40                 System.out.print("id:" + id + " ");
41                 System.out.print("name:" + name + " ");
42                 System.out.println("age:" + age);
43             }
44         }
45         catch (SQLException e) {
46             e.printStackTrace();
47         }
48         System.out.println(con);
49         try {
50             //關閉結果集
51             rs.close();
52             //關閉操作
53             stmt.close();
54             //關閉數據庫
55             con.close();
56         }
57         catch (SQLException e) {
58             e.printStackTrace();
59         }
60     }
61 }

  ResultSet中的所有數據都可以通過getString()方法獲得。

PreparedStatement

  PreparedStatement是Statement的子接口,屬於預處理操作。與直接使用Statement不同的是,PreparedStatement在操作時,是先在數據表中準備好了一條SQL語句,但是此SQL語句的具體內容暫時不設置,而是之後再進行設置。由於PreparedStatement對象已預編譯過,所以其執行速度要高於Statement對象。在開發中不建議使用Statement,而是使用PreparedStatement。

轉自:https://www.cnblogs.com/lucky-zhangcd/p/8401845.html

JDBC連接MySQL數據庫基礎