本篇內(nèi)容介紹了“JDBC代碼怎么重復(fù)使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對(duì)葡萄架等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)成都網(wǎng)站營(yíng)銷優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
如何才能利用JDBC代碼建立一個(gè)與數(shù)據(jù)庫結(jié)構(gòu)無關(guān)的JDBC連接呢?
我們可以通過使用RESULTSETMETADATA()方法獲得表結(jié)構(gòu)。然后使用OBJECT[]數(shù)組遍歷結(jié)果集。當(dāng)我們要取得相應(yīng)的結(jié)果時(shí),我們可以使用ITERATOR迭代器。只需遍歷迭代器就可以取出結(jié)果。
下面的JDBC代碼是我寫的一個(gè)方法:
1IMPORT JAVA.MATH.BIGDECIMAL; 2IMPORT JAVA.SQL.CONNECTION; 3IMPORT JAVA.SQL.DRIVERMANAGER; 4IMPORT JAVA.SQL.RESULTSET; 5IMPORT JAVA.SQL.RESULTSETMETADATA; 6IMPORT JAVA.SQL.SQLEXCEPTION; 7IMPORT JAVA.SQL.STATEMENT; 8IMPORT JAVA.UTIL.ARRAYLIST; 9IMPORT JAVA.UTIL.ITERATOR; 10IMPORT JAVA.UTIL.LIST; 11 12PUBLIC CLASS NEWJDBC { 13 PRIVATE STRING URL = "JDBC:ORACLE(大型網(wǎng)站數(shù)據(jù)庫平臺(tái)):THIN:@LOCALHOST:1521:NITPRO"; 14 15 PRIVATE STRING DBUSERNAME = "SCOTT"; 16 17 PRIVATE STRING DBUSERPASSWORD = "TIGER"; 18 19 PRIVATE CONNECTION CONN = NULL; 20 21 PRIVATE STATEMENT STMT = NULL; 22 23 PRIVATE RESULTSET RS = NULL; 24 25 PUBLIC NEWJDBC() { 26 TRY { 27 CLASS.FORNAME("ORACLE(大型網(wǎng)站數(shù)據(jù)庫平臺(tái)).JDBC.DRIVER.ORACLE(大型網(wǎng)站數(shù)據(jù)庫平臺(tái))DRIVER"); 28 } CATCH (CLASSNOTFOUNDEXCEPTION E) { 29 E.PRINTSTACKTRACE(); 30 } 31 } 32 33 PUBLIC CONNECTION GETCONNECTION() { 34 TRY { 35 CONN = DRIVERMANAGER.GETCONNECTION(URL, DBUSERNAME, DBUSERPASSWORD); 36 } CATCH (SQLEXCEPTION E) { 37 E.PRINTSTACKTRACE(); 38 } 39 RETURN CONN; 40 } 41 42 PUBLIC VOID CLOSE(RESULTSET RS, STATEMENT STMT, CONNECTION CONN) { 43 IF (RS != NULL) { 44 TRY { 45 RS.CLOSE(); 46 } CATCH (SQLEXCEPTION E) { 47 E.PRINTSTACKTRACE(); 48 } 49 } 50 IF (STMT != NULL) { 51 TRY { 52 STMT.CLOSE(); 53 } CATCH (SQLEXCEPTION E) { 54 E.PRINTSTACKTRACE(); 55 } 56 } 57 IF (CONN != NULL) { 58 TRY { 59 CONN.CLOSE(); 60 } CATCH (SQLEXCEPTION E) { 61 E.PRINTSTACKTRACE(); 62 } 63 } 64 } 65 66 PUBLIC LIST QUERY(STRING SQL) { 67 LIST LIST = NEW ARRAYLIST(); 68 69 CONN = THIS.GETCONNECTION(); 70 TRY { 71 STMT = CONN.CREATESTATEMENT(); 72 RS = STMT.EXECUTEQUERY(SQL); 73 //獲取數(shù)據(jù)庫表結(jié)構(gòu) 74 RESULTSETMETADATA RSM = RS.GETMETADATA(); 75 //取得數(shù)據(jù)庫的列數(shù) 76 INT COL = RSM.GETCOLUMNCOUNT(); 77 //生成COL長(zhǎng)度的OBJECT數(shù)組 78 OBJECT[] OBJ = NEW OBJECT[COL]; 79 //遍歷結(jié)果集,將結(jié)果存入OBJECT數(shù)組 80 WHILE (RS.NEXT()) { 81 FOR (INT I = 0; I < COL; I++) { 82 OBJ[I] = RS.GETOBJECT(I + 1); 83 } 84 LIST.ADD(OBJ); 85 } 86 } CATCH (SQLEXCEPTION E) { 87 E.PRINTSTACKTRACE(); 88 } FINALLY { 89 THIS.CLOSE(RS, STMT, CONN); 90 } 91 RETURN LIST; 92 } 93 94 PUBLIC VOID UPDATE(STRING SQL) { 95 TRY { 96 CONN = THIS.GETCONNECTION(); 97 STMT = CONN.CREATESTATEMENT(); 98 STMT.EXECUTEUPDATE(SQL); 99 } CATCH (SQLEXCEPTION E) { 100 E.PRINTSTACKTRACE(); 101 } 102 } 103 104 PUBLIC STATIC VOID MAIN(STRING ARGS[]) { 105 NEWJDBC NJ = NEW NEWJDBC(); 106 STRING SQL = "SELECT * FROM USERS"; 107 LIST LIST = NJ.QUERY(SQL); 108 //返回LIST的迭代器 109 ITERATOR IT = LIST.ITERATOR(); 110 //遍歷迭代器,取出結(jié)果 111 WHILE (IT.HASNEXT()) { 112 OBJECT[] O = (OBJECT[]) IT.NEXT(); 113 INT ID = ((BIGDECIMAL) O[0]).INTVALUE(); 114 SYSTEM.OUT.PRINTLN(ID); 115 } 116 117 } 118}
“JDBC代碼怎么重復(fù)使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!