一。簡介mysql
JDBC:實現跨數據庫平臺,統一數據庫編程接口,但在編程中仍須要編寫sql語句(不一樣的數據庫語句sql語句有些區別),因此hibernate比較流行,徹底屏蔽了數據庫的區別。sql
JDBC兩端:在開發端,有統一的JDBC接口,在數據庫端,不一樣的數據庫有不一樣的JDBC接口(類庫)。
數據庫
二。編程步驟 :具備規律性。編程
1>操做數據庫的通常步驟,可分爲4步:windows
(1)裝載數據庫驅動(可選)服務器
這一步並非必須的,在某些操做系統中,數據庫驅動的相關信息在安裝驅動程序時已經被保存到指定的位置(如windows中,SQL Server數據庫驅動信息被保存到註冊表中)。但對於JDBC驅動,這一步是必須的。
網絡
(2)創建數據庫鏈接(即得到Connection對象)編碼
對於網絡數據庫,創建數據庫鏈接通常要提供下面5種信息:
spa
1,數據庫服務器名(能夠是機器名、域名或IP地址)。 2,端口號 3,數據庫名 4,用戶名 5,密碼操作系統
根據數據庫的不一樣,5種信息略有不一樣。
(3)得到用於進行數據操做的對象
得到操做對象就能夠進行數據庫查詢、增、刪、修改、執行存儲過程等操做。
(4)關閉數據庫
2>JDBC操做數據庫mysql的步驟
(1)裝載數據庫驅動
用jdbc裝載數據庫驅動有兩種方法:
1,使用Class.forName方法
forName方法是Class類的一個靜態方法,返回Class對象。它有一個字符串類型的參數,須要傳入一個JDBC驅動類名:Class.forName("com.mysql.jdbc.Driver");
2,靜態建立JDBC驅動類實例
可直接使用new關鍵字靜態建立JDBC驅動類對象:
Driver myDriver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(myDriver);
後者用於註冊建立的JDBC驅動類對象。
(2)創建數據庫鏈接
在JDBC中,可使用DriverManager類的getConnection方法得到數據庫鏈接對象。在得到數據庫鏈接對象以前須要知道5中參數信息:
1,數據庫服務器名:localhost 2.端口號 省略(默認) 3,數據庫名:xxx 4.用戶名:xxx 5.密碼:xxx
MySQL使用了默認的端口號(3306),所以端口號信息可被省略。MySQL的鏈接字符串格式是:jdbc:nysql://servername/dbname?parameter
按照上面的信息依次填入這個鏈接字符串,填完後的鏈接字符串以下:
jdbc:mysql://localhost/xxx?user=xxx&password=1234&characterEncoding=UTF8
由於須要在數據庫中處理中文,因此在鏈接字符串的末尾須要加上字符編碼以正確處理中文。
得到數據庫鏈接對象的代碼有多種方式,一種是:
String connStr = " jdbc:mysql://localhost/xxx?user=xxx&password=1234&characterEncoding=UTF8";
Connection conn = DriverManager.getConnection(connStr);
另外一種是:
Connection conn = DriverManaget.getConnection(connStr,"用戶名","密碼");
除此以外,也可使用Connection類的setCatalog方法改變當前數據庫:
conn.setCatalog("newdb");
(3)得到用於進行數據操做的對象
在JDBC中,可使用Statement對象(翻譯「語句」)和PreparedStatement對象操做數據庫。(在此介紹前者)。Statement對象經過Connection接口的createStatement方法建立,有3種重載形式。無參數的是:
Statement stmt = conn.createStatement();
經過Statement對象能夠對數據庫進行查詢、增長、刪除、修改等操做。
execute方法通常用於執行DDL(CREATE、DROP等)語句,或是執行DML(INSERT UPDATE DELETE等)語句
stmt.execute("DROP TABLE IF EXISTS t_books");
executeQuery通常用於執行SELECT語句,這個方法經過一個ResultSet對象返回查詢結果,代碼:
ResultSet rs = stmt.executeQuery("SELECT * FORM t_books");
(4)關閉數據庫
將打開的對象依次關閉:stmt.close() conn.close().
部分來自尚學堂。