JDBC(Java Database Connectivity即Java數(shù)據(jù)庫(kù)連接)實(shí)現(xiàn)了Java與數(shù)據(jù)庫(kù)的互連,是一個(gè)定義了一下內(nèi)容的API規(guī)范:
一、如何在Java applet、application 或者Servlet中與數(shù)據(jù)源互交。
二、如何使用JDBC驅(qū)動(dòng)程序。
三、如何編寫JDBC驅(qū)動(dòng)程序。
下面我給大家簡(jiǎn)單介紹一下JDBC的編程步驟:
1.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)。
2.獲得數(shù)據(jù)庫(kù)連接。
3.創(chuàng)建SQL語(yǔ)句。
4.執(zhí)行查詢。
5.遍歷結(jié)果集。
6.關(guān)閉數(shù)據(jù)庫(kù)連接。
下面通過(guò)一小段程序說(shuō)明具體執(zhí)行步驟。
package com.dr1128;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Jdbctest {
public static void main(String[] args){
query();
}
public static void query(){
java.sql.Connection conn = null;
try{
//1加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)
Class.forName("com.mysql.jdbc.Driver");
//2獲得數(shù)據(jù)庫(kù)連接
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc_db","root","1234");
//3創(chuàng)建語(yǔ)句
String sql = "select * from UserTbl";
//返回一個(gè)執(zhí)行sql的句柄
java.sql.Statement stmt = conn.createStatement();
//4執(zhí)行查詢
java.sql.ResultSet rs = stmt.executeQuery(sql);
//5遍歷結(jié)果集
while(rs.next()){
int id = rs.getInt(1);
String username = rs.getString(2);
String password = rs.getString(3);
int age = rs.getInt(4);
System.out.println(id+username+password+age);
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6關(guān)閉數(shù)據(jù)庫(kù)連接
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
conn = null;
e.printStackTrace();
}
}
}
}
}
需要說(shuō)明的是,上述代碼正確執(zhí)行,我們需要在該工程里面加載連接數(shù)據(jù)庫(kù)的jar包。根據(jù)不同的數(shù)據(jù)庫(kù)選取不同的jar包,本例用的是MySQL數(shù)據(jù)庫(kù)。當(dāng)加載MySQL數(shù)據(jù)庫(kù)的jar包后,Class.forName("com.mysql.jdbc.Driver");語(yǔ)句執(zhí)行,使程序確定使用的是MySQL數(shù)據(jù)庫(kù)。
DriverManager 驅(qū)動(dòng)程序管理器 在數(shù)據(jù)庫(kù)和相應(yīng)驅(qū)動(dòng)程序之間建立連接。conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdbc_db","root","1234");語(yǔ)句執(zhí)行,使程序連接到數(shù)據(jù)庫(kù)上。
Connection 對(duì)象代表與數(shù)據(jù)庫(kù)的連接,也就是在已經(jīng)加載的Driver和數(shù)據(jù)庫(kù)之間建立連接語(yǔ)句,getConnection函數(shù)中三個(gè)參數(shù)分別是url,user,password,我們也可以通過(guò)其它方法來(lái)連接。有關(guān)這方面的問(wèn)題我將在其它文章敘述。
Statement 提供在基層連接上運(yùn)行SQL語(yǔ)句,并且訪問(wèn)結(jié)果。
ResultSet 在Statement執(zhí)行SQL語(yǔ)句時(shí),有時(shí)會(huì)返回ResultSet結(jié)果集,包含的是查詢的結(jié)果集。
當(dāng)我們創(chuàng)建SQL語(yǔ)句后,通過(guò)Statement來(lái)執(zhí)行,并將結(jié)果通過(guò)ResultSet 類型的rs連接上。 然后是遍歷結(jié)果集,來(lái)執(zhí)行相應(yīng)的操作。最后執(zhí)行完對(duì)數(shù)據(jù)庫(kù)的操作后,要關(guān)閉數(shù)據(jù)庫(kù)連接。
至此,有關(guān)用JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的操作完成。