欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

jdbc

系統(tǒng) 1838 0

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

?

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

?

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

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

?

(4)、處理結(jié)果。使用ResultSet對(duì)象的next()方法將光標(biāo)(cursor)指向下一行。最初光標(biāo)位于第一行之前,因此第一次調(diào)用next()方法將光標(biāo)置于第一行上。如果到達(dá)結(jié)果集的末尾,則ResultSet的next()方法會(huì)返回false。方法getXXX提供了獲取當(dāng)前行中某列值的途徑,列名或列號(hào)可用于標(biāo)識(shí)要從中獲取數(shù)據(jù)的列。例如:如果數(shù)據(jù)表中第一列的列名為a,存儲(chǔ)類(lèi)型為整型,則可以使用兩種方法獲取存儲(chǔ)在該列中的值,如: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ū)動(dòng)類(lèi)裝載入Java虛擬機(jī)中 ??
  2. Class.forName(JDBC驅(qū)動(dòng)類(lèi)的名稱(chēng)); ??
  3. ??
  4. //加載驅(qū)動(dòng),并與數(shù)據(jù)庫(kù)建立連接,其中數(shù)據(jù)庫(kù)連接字符串用來(lái)標(biāo)識(shí)數(shù)據(jù)庫(kù) ??
  5. Connection?conn?=?DriverManager.getConnection(數(shù)據(jù)庫(kù)連接字符串,數(shù)據(jù)庫(kù)用戶(hù)名,密碼); ??
  6. ??
  7. //執(zhí)行SQL語(yǔ)句,并得到結(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ū)動(dòng)類(lèi)裝載入Java虛擬機(jī)中
Class.forName(JDBC驅(qū)動(dòng)類(lèi)的名稱(chēng));

//加載驅(qū)動(dòng),并與數(shù)據(jù)庫(kù)建立連接,其中數(shù)據(jù)庫(kù)連接字符串用來(lái)標(biāo)識(shí)數(shù)據(jù)庫(kù)
Connection conn = DriverManager.getConnection(數(shù)據(jù)庫(kù)連接字符串,數(shù)據(jù)庫(kù)用戶(hù)名,密碼);

//執(zhí)行SQL語(yǔ)句,并得到結(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提供了一種標(biāo)識(shí)數(shù)據(jù)庫(kù)的方法,可以使相應(yīng)的JDBC驅(qū)動(dòng)程序能識(shí)別數(shù)據(jù)庫(kù)并與之建立連接。
JDBC URL的標(biāo)準(zhǔn)語(yǔ)法由以下三個(gè)部分組成,各部分間用冒號(hào)分隔。
Jdbc:<子協(xié)議>:<子名稱(chēng)>

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


JDBC URL示例:
jdbc:odbc:news

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

?

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


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


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


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

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

pstmt.setInt(2,10);

?

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

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

hmFromat.format(new Date());

?

7、 步驟

?1)調(diào)用Class類(lèi)的forName()方法,加載并注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)。
?2)調(diào)用DriverManager類(lèi)的getConnection()方法,建立到數(shù)據(jù)庫(kù)的連接
?3)調(diào)用Connection對(duì)象的createStatement()方法,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)
?4)調(diào)用Statement對(duì)象的executeQuery()方法得到ResultSet對(duì)象。
?5) 調(diào)用ResultSet對(duì)象的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工具類(lèi)?? ?
  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工具類(lèi)  
 */  
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號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲欧美国产精品久久 | 欧美精品99毛片免费高清观看 | 性做久久久久久 | 成人精品一区二区三区校园激情 | 奇米影视色 | 色综合色综合 | 一区二区三区www | 日韩在线播放视频 | www.奇米第四色| 日韩一区二区三区在线观看 | 国产一区久久 | 黄色在线播 | 精品国产一区二区国模嫣然 | 午夜激情小视频 | 久久男人视频 | 富二代视频污 | 久久久伊人色综合A片无码 国产精品区一区二区三 | 久久亚洲一级毛片 | 日本v片做爰免费视频网站 国产精品v欧美精品v日韩精品 | 久久亚洲精品国产精品777777 | 亚洲一区二区三区免费在线观看 | 亚洲日韩中文字幕一区 | www.日韩| 综合久久久久 | 天天草夜夜骑 | 欧美精品黄页免费高清在线 | 亚洲一区2区三区4区5区 | 亚洲精品中文字幕乱码一区二区 | 日本高清免费h色视频在线观看 | 日韩视频在线免费观看 | 日韩在线观看毛片 | 欧美高清不卡午夜精品免费视频 | 2020天天狠天天透天干天天怕 | 久久蜜桃av一区二区天堂 | 国产精品成在线观看 | 一区二区三区在线观看视频 | 91视视频在线观看入口直接观看 | 亚洲国产成人va在线观看网址 | 欧美日韩国产色综合一二三四 | 美女扒开胸罩给男生看视频 | 亚洲精品视频一区 |