JDBC鏈接MySQL數據庫基礎

主要內容java

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

 


JDBC簡介mysql

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

  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,數據控制語言),用於定義數據庫用戶的權限。spa

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

select {*|column alias}code

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。

相關文章
相關標籤/搜索