JDBC簡介:
JDBC全稱為java database connectivity,是sun公司指定的java數據庫連接技術的簡稱。
他是sun公司和數據庫開發商共同開發出來的獨立於DBMS的應用程序接口,它為java程序員進行數據庫編程提供了統一的API。
JDBC實際上有兩組API,一組面向java應用程序開發人員,另一組是面向數據庫驅動程序開發人員的,一般都是數據驅動程序開發人員利用后面一組API開發出供應程序開發人員使用的API。
我們需要熟悉包java.sql.*中定義的類(class),接口(interface),例外(expection),並且能夠靈活使用他們,就能夠發揮出JDBC強大的功能。
包java.sql.*中幾個核心的類和接口:
① java.sql.DriverManager用來加載不同數據庫廠商的JDBC驅動,並為創建新的數據庫連接提供支持
② java.sql.Driver指定數據庫的驅動入口,DriverManager將通過該類作為連接數據的參數
③ java.sql.Connection完成針對某指定數據庫的連接功能
④ java.sql.Statement在一個已經建立的連接中,作為SQL語句執行的容器,它有兩個子類:
java.sql.CallableStatement 用於執行數據庫中已經創建好的存儲過程。
java.sql.preparedStatement用於執行預編譯的SQL語句。
⑤ java.sql.ResultSet用於存儲執行特定SQL語句后返回的結果集。
一個查詢數據庫表的JDBC連接的基本過程如下:
① class.forName("com.mysql.jdbc.Driver").newInstance();
作用:加載驅動程序類,這里加載mysql的jdbc驅動
② connection conn = DriverManager.getConnection(url,"user","password");
作用:建立連接
③ Statement statement = conn.createStatement();
作用:通過這個連接連接sql語句執行的容器
④ String sql = "select * from table1";
作用:建立sql語句
⑤ ResultSet rs = statement.executeQuery(sql);
作用:利用前面的sql容器執行剛建立的sql語句,並把結構返回到結果集對象中。
⑥ 分析獲取的查詢結果
一個簡單的實例如下:
1 public class JDBCTest { 2 public static Connection getConnection() throws SQLException, 3 java.lang.ClassNotFoundException 4 { 5 //第一步:加載MySQL的JDBC的驅動 6 Class.forName("com.mysql.jdbc.Driver"); 7 8 //取得連接的url,能訪問MySQL數據庫的用戶名,密碼;jsj:數據庫名 9 String url = "jdbc:mysql://localhost:3306/fuck"; 10 String username = "root"; 11 String password = "861113"; 12 13 //第二步:創建與MySQL數據庫的連接類的實例 14 Connection con = DriverManager.getConnection(url, username, password); 15 return con; 16 } 17 18 19 public static void main(String args[]) { 20 try 21 { 22 //第三步:獲取連接類實例con,用con創建Statement對象類實例 sql_statement 23 Connection con = getConnection(); 24 Statement sql_statement = con.createStatement(); 25 26 //如果同名數據庫存在,刪除 27 //sql_statement.executeUpdate("drop table if exists student"); 28 //執行了一個sql語句生成了一個名為student的表 29 //sql_statement.executeUpdate("create table student (id int not null auto_increment, name varchar(20) not null default 'name', math int not null default 60, primary key (id) ); "); 30 31 //向person表中插入數據 32 sql_statement.executeUpdate("insert person values(3, 'liying', 98)"); 33 sql_statement.executeUpdate("insert person values(4, 'jiangshan', 88)"); 34 sql_statement.executeUpdate("insert person values(5, 'wangjiawu', 78)"); 35 sql_statement.executeUpdate("insert person values(6, 'duchangfeng', 100)"); 36 37 //第四步:執行查詢,用ResultSet類的對象,返回查詢的結果 38 String query = "select * from person"; 39 ResultSet result = sql_statement.executeQuery(query); 40 41 //顯示數據中person表中的內容: 42 System.out.println("person表中的數據如下:"); 43 System.out.println("------------------------"); 44 System.out.println("序號" + " " + "姓名" + " " + "分數"); 45 System.out.println("------------------------"); 46 47 //對獲得的查詢結果進行處理,對Result類的對象進行操作 48 while (result.next()) 49 { 50 int number = result.getInt("number"); 51 String name = result.getString("name"); 52 String mathsorce = result.getString("mathsorce"); 53 54 //取得數據庫中的數據 55 System.out.println(" " + number + " " + name + " " + mathsorce); 56 } 57 58 //關閉連接和聲明 59 sql_statement.close(); 60 con.close(); 61 62 } catch(java.lang.ClassNotFoundException e) { 63 System.err.print("ClassNotFoundException"); 64 System.err.println(e.getMessage()); 65 } catch (SQLException ex) { 66 System.err.println("SQLException: " + ex.getMessage()); 67 } 68 } 69 70 }
