黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

jdbc

系統(tǒng) 2201 0

2.4、JDBC程序的代碼模板
?????? 開發(fā)一個JDBC應(yīng)用程序,基本需要以下步驟:
(1)、把JDBC驅(qū)動類裝載入Java虛擬機中,為此,可使用Class.forName()方法,此方法將給定的類加載到Java虛擬機中。如果系統(tǒng)中不存在給定的類,則會引發(fā)異常,異常類型為ClassNotFoundException。
???????? Class.forName(“JDBC驅(qū)動類的名稱”);

?

(2)、加載驅(qū)動,并與數(shù)據(jù)庫建立連接。DriverManager類跟蹤已注冊的驅(qū)動程序,當調(diào)用getConnection()方法時,它會搜索整個驅(qū)動程序列表,直到找到一個能夠連接至數(shù)據(jù)連接字符串中指定的數(shù)據(jù)庫的驅(qū)動程序。加載此驅(qū)動程序之后,將使用DriverManager類的getConnection()方法建立與數(shù)據(jù)庫的連接。此方法接收三個參數(shù),分別表示URL、用戶名和密碼。用戶名和密碼是可選的。
???????? Connection conn = DriverManager.getConnection(數(shù)據(jù)庫連接字符串,數(shù)據(jù)庫用戶名,密碼);

?

(3)、發(fā)送SQL語句,并得到結(jié)果集。一旦連接建立,就使用該連接創(chuàng)建Statement接口的實例,并將SQL語句傳遞給它所連接的數(shù)據(jù)庫,并返回類型為ResultSet的對象,它包含執(zhí)行SQL查詢的結(jié)果。
???????? Statement stmt = conn.createStatement();

???????? ResultSet rs = stmt.executeQuery(select a,b,c from table);

?

(4)、處理結(jié)果。使用ResultSet對象的next()方法將光標(cursor)指向下一行。最初光標位于第一行之前,因此第一次調(diào)用next()方法將光標置于第一行上。如果到達結(jié)果集的末尾,則ResultSet的next()方法會返回false。方法getXXX提供了獲取當前行中某列值的途徑,列名或列號可用于標識要從中獲取數(shù)據(jù)的列。例如:如果數(shù)據(jù)表中第一列的列名為a,存儲類型為整型,則可以使用兩種方法獲取存儲在該列中的值,如:int x = rs.getInt(“a”);或者:int x = rs.getInt(1);

處理結(jié)果的代碼示例:
???????? while(rs.next()){

?????????? int x = rs.getInt(“a”);

?????????? String s = rs.getString(“b”);

?????????? float f = rs.getFloat(“c”);

}

?

JDBC程序的代碼模板:

Java代碼 復(fù)制代碼 ? 收藏代碼
  1. //把JDBC驅(qū)動類裝載入Java虛擬機中 ??
  2. Class.forName(JDBC驅(qū)動類的名稱); ??
  3. ??
  4. //加載驅(qū)動,并與數(shù)據(jù)庫建立連接,其中數(shù)據(jù)庫連接字符串用來標識數(shù)據(jù)庫 ??
  5. Connection?conn?=?DriverManager.getConnection(數(shù)據(jù)庫連接字符串,數(shù)據(jù)庫用戶名,密碼); ??
  6. ??
  7. //執(zhí)行SQL語句,并得到結(jié)果集 ??
  8. Statement?stmt?=?conn.createStatement(); ??
  9. ResultSet?rs?=?stmt.executeQuery(“select?a,b,c?from?table”); ??
  10. ??
  11. //處理結(jié)果 ??
  12. while (rs.next()){ ??
  13. ?? int ?x?=?rs.getInt(“a”); ??
  14. ??String?s?=?rs.getString(“b”); ??
  15. ?? float ?f?=?rs.getFloat(“c”); ??
  16. }??
    //把JDBC驅(qū)動類裝載入Java虛擬機中
Class.forName(JDBC驅(qū)動類的名稱);

//加載驅(qū)動,并與數(shù)據(jù)庫建立連接,其中數(shù)據(jù)庫連接字符串用來標識數(shù)據(jù)庫
Connection conn = DriverManager.getConnection(數(shù)據(jù)庫連接字符串,數(shù)據(jù)庫用戶名,密碼);

//執(zhí)行SQL語句,并得到結(jié)果集
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“select a,b,c from table”);

//處理結(jié)果
while(rs.next()){
  int x = rs.getInt(“a”);
  String s = rs.getString(“b”);
  float f = rs.getFloat(“c”);
}
  

??

2.5、什么是JDBC URL

JDBC URL提供了一種標識數(shù)據(jù)庫的方法,可以使相應(yīng)的JDBC驅(qū)動程序能識別數(shù)據(jù)庫并與之建立連接。
JDBC URL的標準語法由以下三個部分組成,各部分間用冒號分隔。
Jdbc:<子協(xié)議>:<子名稱>

JDBC URL的三個部分可以分解如下:
其中jdbc-----代表協(xié)議。
<子協(xié)議>----驅(qū)動程序名或數(shù)據(jù)庫連接機制的名稱。
<子名稱>----一種標識數(shù)據(jù)庫的方法。


JDBC URL示例:
jdbc:odbc:news

jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=news

?

3、? Statement接口和PreparedStatement接口中的方法
ResultSet executeQuery(String sql):可以執(zhí)行SQL查詢并獲取到ResultSet對象。
int executeUpdate(String sql):可以執(zhí)行插入、刪除、更新等操作,返回值是執(zhí)行該操作所影響的行數(shù)。
boolean execute(String sql):這是一個最為一般的執(zhí)行方法,可以執(zhí)行任意SQL語句,然后獲得一個布爾值,表示是否返回ResultSet。


4、? 為什么要關(guān)閉Statement對象以及數(shù)據(jù)庫連接
如果不關(guān)閉Statement對象,它們會一直占用服務(wù)器資源,直到Java垃圾收集程序來回收它。作為一種好的編程風(fēng)格,應(yīng)在不需要Statement對象時顯示地關(guān)閉它們,這將立即釋放服務(wù)器資源,有助于避免潛在的內(nèi)存問題。同樣,使用完數(shù)據(jù)庫連接后,就應(yīng)關(guān)閉它,釋放連接所占用的數(shù)據(jù)庫資源。


5、? PreparedStatement語句
PreparedStatement接口繼承自Statement接口,PreparedStatement比普通的Statement對象使用起來更加靈活,更有效率。PreparedStatement實例包含已編譯的SQL語句,SQL語句可具有一個或多個輸入?yún)?shù)。這些輸入?yún)?shù)的值在SQL語句創(chuàng)建時未被指定,而是為每個輸入?yún)?shù)保留一個問號(“?”)作為占位符。


PreparedStatement pstmt = con.prepareStatement(“update table set a=? where b=?”);

在執(zhí)行PreparedStatement對象之前,必須設(shè)置每個輸入?yún)?shù)的值。可通過setXXX方法來完成,其中XXX是與該參數(shù)相應(yīng)的類型。例如,如果參數(shù)具有Java類型long,則使用的方法就是設(shè)置給該參數(shù)的值。例如,以下代碼將第一個參數(shù)設(shè)為長整型值123456789,第二個參數(shù)設(shè)為整型值10:
pstmt.setLong(1,123456789);

pstmt.setInt(2,10);

?

由于PreparedStatement對象已預(yù)編譯過,所以其執(zhí)行速度要快于Statement對象,因此,多次執(zhí)行的SQL語句應(yīng)被創(chuàng)建為PreparedStatement對象,以提高效率。
?

6、? 格式化時間
SimpleDateFormat hmFromat = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

hmFromat.format(new Date());

?

7、 步驟

?1)調(diào)用Class類的forName()方法,加載并注冊數(shù)據(jù)庫驅(qū)動。
?2)調(diào)用DriverManager類的getConnection()方法,建立到數(shù)據(jù)庫的連接
?3)調(diào)用Connection對象的createStatement()方法,訪問數(shù)據(jù)庫
?4)調(diào)用Statement對象的executeQuery()方法得到ResultSet對象。
?5) 調(diào)用ResultSet對象的getObject()方法,處理結(jié)果。
?6)釋放資源(連接應(yīng)該盡可能晚建立,釋放資源應(yīng)盡可能早釋放。)

?

8、 代碼

Java代碼 復(fù)制代碼 ? 收藏代碼
  1. import ?java.sql.Connection;??? ??
  2. import ?java.sql.DriverManager;??? ??
  3. import ?java.sql.ResultSet;??? ??
  4. import ?java.sql.SQLException;??? ??
  5. import ?java.sql.Statement;??? ??
  6. ?? ??
  7. /**?? ?
  8. ?*Jdbc工具類?? ?
  9. ?*/ ?? ??
  10. public ? class ?JdbcUtils?{??? ??
  11. ???? private ? static ?String?url?=? "jdbc:mysql://localhost:3306/test" ;??? ??
  12. ???? private ? static ?String?user?=? "root" ;??? ??
  13. ???? private ? static ?String?password?=? "123456" ;??? ??
  14. ?? ??
  15. ???? private ?JdbcUtils()?{????}??? ??
  16. ???? static ?{??? ??
  17. ???????? try ?{??? ??
  18. ????????????Class.forName( "com.mysql.jdbc.Driver" );??? ??
  19. ????????}? catch ?(ClassNotFoundException?ex)?{??? ??
  20. ???????????? throw ? new ?ExceptionInInitializerError(ex);??? ??
  21. ????????}??? ??
  22. ????}??? ??
  23. ???? public ? static ?Connection?getConnection()? throws ?SQLException{??? ??
  24. ???????? return ?DriverManager.getConnection(url,?user,?password);??? ??
  25. ????}??? ??
  26. ???? public ? static ? void ?free(Connection?conn,?Statement?st,?ResultSet?rs)?{??? ??
  27. ???????? try ?{??? ??
  28. ???????????? if ?(rs?!=? null )?{??? ??
  29. ????????????????rs.close();??? ??
  30. ????????}??? ??
  31. ????????}? catch ?(SQLException?ex)?{??? ??
  32. ????????????System.out.println(ex.toString());??? ??
  33. ????????}? finally ?{??? ??
  34. ???????????? try ?{??? ??
  35. ???????????????? if (st!= null )?{??? ??
  36. ????????????????????st.close();??? ??
  37. ????????????????}??? ??
  38. ????????????}? catch ?(SQLException?ex)?{??? ??
  39. ????????????????System.out.println(ex.toString());??? ??
  40. ????????????}? finally ?{??? ??
  41. ???????????????? try ?{??? ??
  42. ???????????????????? if (conn!= null ){??? ??
  43. ????????????????????????conn.close();??? ??
  44. ????????????????????}??? ??
  45. ????????????????}? catch ?(SQLException?ex)?{??? ??
  46. ????????????????????System.out.println(ex.toString());??? ??
  47. ????????????????}??? ??
  48. ????????????}??? ??
  49. ????????}??? ??
  50. ????}??? ??
  51. }????
    import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Statement;   
  
/**  
 *Jdbc工具類  
 */  
public class JdbcUtils {   
    private static String url = "jdbc:mysql://localhost:3306/test";   
    private static String user = "root";   
    private static String password = "123456";   
  
    private JdbcUtils() {    }   
    static {   
        try {   
            Class.forName("com.mysql.jdbc.Driver");   
        } catch (ClassNotFoundException ex) {   
            throw new ExceptionInInitializerError(ex);   
        }   
    }   
    public static Connection getConnection() throws SQLException{   
        return DriverManager.getConnection(url, user, password);   
    }   
    public static void free(Connection conn, Statement st, ResultSet rs) {   
        try {   
            if (rs != null) {   
                rs.close();   
	    }   
        } catch (SQLException ex) {   
            System.out.println(ex.toString());   
        } finally {   
            try {   
                if(st!=null) {   
                    st.close();   
                }   
            } catch (SQLException ex) {   
                System.out.println(ex.toString());   
            } finally {   
                try {   
                    if(conn!=null){   
                        conn.close();   
                    }   
                } catch (SQLException ex) {   
                    System.out.println(ex.toString());   
                }   
            }   
        }   
    }   
}  
  
Java代碼 復(fù)制代碼 ? 收藏代碼
  1. import ?java.sql.Connection;??? ??
  2. import ?java.sql.ResultSet;??? ??
  3. import ?java.sql.SQLException;??? ??
  4. import ?java.sql.Statement;??? ??
  5. ?? ??
  6. public ? class ?Test?{??? ??
  7. ?? ??
  8. ???? public ? static ? void ?main(String[]?args)?{??? ??
  9. ????????optimize();??? ??
  10. ????}??? ??
  11. ?? ??
  12. ???? public ? static ? void ?optimize()?{??? ??
  13. ????????Connection?conn?=? null ;??? ??
  14. ????????Statement?st?=? null ;??? ??
  15. ????????ResultSet?rs?=? null ;??? ??
  16. ???????? try ?{??? ??
  17. ????????????conn?=?JdbcUtils.getConnection();??? ??
  18. ????????????st?=?conn.createStatement();??? ??
  19. ????????????rs?=?st.executeQuery( "Select?*?from?Students;" );??? ??
  20. ???????????? while ?(rs.next())?{??? ??
  21. ????????????????System.out.println(rs.getObject( 1 )?+? "\t" ?+?rs.getObject( 2 )?+? "\t" ?+?rs.getObject( 3 )?+? "\t" ?+?rs.getObject( 4 ));??? ??
  22. ????????????}??? ??
  23. ????????}? catch ?(SQLException?ex)?{??? ??
  24. ????????????System.out.println(ex.toString());??? ??
  25. ????????}? finally ?{??? ??
  26. ????????????JdbcUtils.free(conn,?st,?rs);??? ??
  27. ????????}??? ??
  28. ????}??? ??
  29. }??

jdbc


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論