JDBC
JDBC: Java Database Connectivity SUN 公司提供的一套操作數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)規(guī)范。
一、 JDBC與數(shù)據(jù)庫(kù)驅(qū)動(dòng)
接口與實(shí)現(xiàn)的關(guān)系
二奇钞、JDBC規(guī)范(掌握四個(gè)核心對(duì)象)
- DriverManager : 注冊(cè)驅(qū)動(dòng)
- Connection:與數(shù)據(jù)庫(kù)進(jìn)行連接
- Statement: 操作數(shù)據(jù)庫(kù)SQL語(yǔ)句的對(duì)象
- ResultSet: 結(jié)果集或者一張?zhí)摂M表
public static void main(String[] args) throws SQLException {
System.out.println("test jjjjDemo");
Connection con = null;
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2", "root", "password");
Statement stmt = conn.createStatement(); // 得到執(zhí)行SQL的對(duì)象
ResultSet rs = stmt.executeQuery("select * from employee");
while (rs.next()) {
System.out.println(rs.getObject(1)); // 訪問(wèn)數(shù)據(jù)庫(kù)的第一列
System.out.println(rs.getObject(2)); // // 訪問(wèn)數(shù)據(jù)庫(kù)的第二列
System.out.println(rs.getObject(3));
System.out.println(rs.getObject(4));
System.out.println(rs.getObject(5));
System.out.println(rs.getObject(6));
System.out.println(rs.getObject(7));
System.out.println(rs.getObject(8));
System.out.println("================================");
}
// 結(jié)果集關(guān)閉 釋放支援
rs.close();
stmt.close();
conn.close();
}
DriverManager 優(yōu)缺點(diǎn)
導(dǎo)致注冊(cè)兩次
強(qiáng)烈依賴數(shù)據(jù)庫(kù)的驅(qū)動(dòng) jar
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
public Driver() throws SQLException {
}
// 靜態(tài)代碼塊隨著類的加載而加載忽刽,導(dǎo)致注冊(cè)兩側(cè)
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
改為直接加載驅(qū)動(dòng)
public static void main(String[] args) throws SQLException, ClassNotFoundException {
System.out.println("test jjjjDemo");
Connection con = null;
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver"); // 加載驅(qū)動(dòng)(反射)
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2", "root", "password");
Statement stmt = conn.createStatement(); // 得到執(zhí)行SQL的對(duì)象
ResultSet rs = stmt.executeQuery("select * from employee");
while (rs.next()) {
System.out.println(rs.getObject(1));
System.out.println(rs.getObject(2));
System.out.println(rs.getObject(3));
System.out.println(rs.getObject(4));
System.out.println(rs.getObject(5));
System.out.println(rs.getObject(6));
System.out.println(rs.getObject(7));
System.out.println(rs.getObject(8));
System.out.println("================================");
}
// 結(jié)果集關(guān)閉 釋放支援
rs.close();
stmt.close();
conn.close();
}
URL:SUN 公司與數(shù)據(jù)庫(kù)廠商之間的協(xié)議
協(xié)議 子協(xié)議 IP 端口號(hào) 數(shù)據(jù)庫(kù)
jdbc: mysql: // localhost: 3306 /mydb2