成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JDBC干貨篇一

hiyang / 2676人閱讀

摘要:干貨篇一基礎(chǔ)的全稱(chēng)是,即數(shù)據(jù)庫(kù)連接,它是一種可以執(zhí)行語(yǔ)句的。將光標(biāo)移動(dòng)到上一行,如果超過(guò)結(jié)果集的范圍則返回。列索引從開(kāi)始,意味著行中的第一列是,第二列是,以此類(lèi)推。

JDBC干貨篇一 JDBC基礎(chǔ)

JDBC的全稱(chēng)是Java Database Connectivity,即Java數(shù)據(jù)庫(kù)連接,它是一種可以執(zhí)行SQL語(yǔ)句的Java API。程序可通過(guò)JDBC API連接到關(guān)系數(shù)據(jù)庫(kù),并使用結(jié)構(gòu)化查詢語(yǔ)言(SQL,數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)的查詢語(yǔ)言)來(lái)完成對(duì)數(shù)據(jù)庫(kù)的查詢、更新

與其他數(shù)據(jù)庫(kù)編程環(huán)境相比,JDBC為數(shù)據(jù)庫(kù)開(kāi)發(fā)提供了標(biāo)準(zhǔn)的API,使用JDBC開(kāi)發(fā)的數(shù)據(jù)庫(kù)應(yīng)用可以跨平臺(tái)運(yùn)行,而且還可以跨數(shù)據(jù)庫(kù)(如果全部使用標(biāo)準(zhǔn)的SQL語(yǔ)句)。也就是說(shuō)如果使用JDBC開(kāi)發(fā)一個(gè)數(shù)據(jù)庫(kù)應(yīng)用,則該應(yīng)用既可以在Windows操作系統(tǒng)上運(yùn)行,又可以在Unix等其他操作系統(tǒng)上運(yùn)行,既可以使用MySQL數(shù)據(jù)庫(kù),又可以使用Oracle等其他的數(shù)據(jù)庫(kù),應(yīng)用程序不需要做任何的修改

加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)

Class.forName(classDriver)其中classDriver就是數(shù)據(jù)庫(kù)驅(qū)動(dòng)類(lèi)對(duì)應(yīng)的字符串,下面給出加載mysql,oracle數(shù)據(jù)庫(kù)的例子:

Class.forName("com.mysql.jdbc.Driver");   //mysql
Class.forName("oracle.jabc.driver.OracleDriver");    //oracle
獲取數(shù)據(jù)庫(kù)連接

獲得數(shù)據(jù)庫(kù)連接的方法為DriverManager.getConnection(),其中有不同的參數(shù),也對(duì)應(yīng)不同的方法,下面將會(huì)詳細(xì)介紹

DriverManager.getConnection(String url)

DriverManager.getConnection(String url, Properties prop) 這里的Properties是一個(gè)屬性集,詳情請(qǐng)看文檔

DriverManager.getConnection(String url,String user,String password) 這里的urljdbc:mysql://localhost:3306/java_demo,其中java_demo表示你自己創(chuàng)建的數(shù)據(jù)庫(kù)名字,urser表示當(dāng)前數(shù)據(jù)庫(kù)的登錄的用戶名,password表示密碼

        //第二種方法
        String url="jdbc:mysql://localhost:3306/java_demo";  //這是連接的url
        String user="root";
        String password="root";   
        Properties properties=new Properties();   //創(chuàng)建屬性集
        properties.setProperty("password", password);   //向起中添加屬性,很想python中的字典
        properties.setProperty("user",user);   
        Class.forName("com.mysql.jdbc.Driver");   //加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)
        Connection conn=DriverManager.getConnection(url,properties);   //連接數(shù)據(jù)庫(kù)
        
        //第三種方法
        
        Connection conn=DriverManager.getConnection(url,user,password);   //連接數(shù)據(jù)庫(kù) 
        

注意:以上只是一些例子,并不是完整的代碼,其中并沒(méi)有處理異常,還應(yīng)該注意的是要關(guān)閉connection

查詢數(shù)據(jù)

查詢數(shù)據(jù)有兩種方法,分別為靜態(tài)查詢和動(dòng)態(tài)查詢,靜態(tài)查詢使用的Statement,動(dòng)態(tài)查詢使用的PrepareStatement,下面詳細(xì)介紹這兩種查詢方法

靜態(tài)查詢

使用的是Statement,其中常用的函數(shù)如下:

boolean execute(String SQL) 如果ResultSet對(duì)象可以被檢索,則返回的布爾值為 true ,否則返回 false 。當(dāng)你需要使用真正的動(dòng)態(tài) SQL 時(shí),可以使用這個(gè)方法來(lái)執(zhí)行 SQL DDL 語(yǔ)句

int executeUpdate(String SQL) 返回執(zhí)行 SQL 語(yǔ)句影響的行的數(shù)目。使用該方法來(lái)執(zhí)行 SQL 語(yǔ)句,是希望得到一些受影響的行的數(shù)目,例如,INSERT,UPDATEDELETE 語(yǔ)句

ResultSet executeQuery(String SQL) : 返回一個(gè) ResultSet 對(duì)象。當(dāng)你希望得到一個(gè)結(jié)果集時(shí)使用該方法,就像你使用一個(gè) SELECT 語(yǔ)句。

close()關(guān)閉statement對(duì)象,這個(gè)是必須有的,為了程序的安全,必須在結(jié)束之前關(guān)閉

實(shí)例:

    Statement stmt = null;   //申請(qǐng)對(duì)象
try {
   stmt = connection.createStatement( );   //通過(guò)Connection對(duì)象創(chuàng)建statement對(duì)象
   
   String sql_1="select * from course;";
   String sql_2="select * from course where id=2;";
   
   ResultSet res_1=stm.executeQuery(sql_1);   //執(zhí)行查詢語(yǔ)句,返回的是一個(gè)結(jié)果集合,上面已經(jīng)說(shuō)明了
   ResultSet res_2=stm.executeQuery(sql_1);
   
   while(res_1.next())
   {
   System.out.println(res_1.getInt(1)+"---"+res_1.getString(2));   //分別查詢第一列和第二列的值,通過(guò)列數(shù)查詢
   System.out.println(res_1.getInt("id")+"---"+res_1.getString("name"));   //通過(guò)列名查詢
   
   }
  
   }
catch (SQLException e) {    //捕捉異常
   . . .
}
finally {
    if(connection!=null)
    {
        connection.close();    //關(guān)閉連接
    }
   if(stmt!=null)
   {
       stmt.close();  //關(guān)閉
   }
}

說(shuō)明:ResultSet常用的方法如下:注意下面的方法會(huì)發(fā)生SQLException異常

public void beforeFirst() 將光標(biāo)移動(dòng)到第一行之前。

public void afterLast() 將光標(biāo)移動(dòng)到最后一行之后。

public boolean first() 將光標(biāo)移動(dòng)到第一行。從第一行的數(shù)據(jù)開(kāi)始讀取

public void last() 將光標(biāo)移動(dòng)到最后一行。

public boolean absolute(int row) 將光標(biāo)移動(dòng)到指定的第 row 行。

public boolean previous() 將光標(biāo)移動(dòng)到上一行,如果超過(guò)結(jié)果集的范圍則返回 false。

public boolean next() 將光標(biāo)移動(dòng)到下一行,如果是結(jié)果集的最后一行則返回 false。

public int getRow() 返回當(dāng)前光標(biāo)指向的行數(shù)的值。

public void moveToInsertRow() 將光標(biāo)移動(dòng)到結(jié)果集中指定的行,可以在數(shù)據(jù)庫(kù)中插入新的一行。當(dāng)前光標(biāo)位置將被記住

public void moveToCurrentRow() 如果光標(biāo)處于插入行,則將光標(biāo)返回到當(dāng)前行,其他情況下,這個(gè)方法不執(zhí)行任何操作

public int getInt(String columnName) 返回當(dāng)前行中名為 columnName 的列的 int 值。

public int getInt(int columnIndex) 返回當(dāng)前行中指定列的索引的 int 值。列索引從 1 開(kāi)始,意味著行中的第一列是 1 ,第二列是 2 ,以此類(lèi)推。

getString(int columIndex) 返回指定列的String類(lèi)型的數(shù)據(jù)

getString(String columName) 返回當(dāng)前行中名為columNameString類(lèi)型的值

動(dòng)態(tài)查詢

動(dòng)態(tài)查詢使用的PrepareStatement這個(gè)類(lèi)實(shí)現(xiàn)的,PreparedStatement 接口擴(kuò)展了 Statement 接口,它讓你用一個(gè)常用的 Statement 對(duì)象增加幾個(gè)高級(jí)功能。這個(gè) statement 對(duì)象可以提供靈活多變的動(dòng)態(tài)參數(shù)

實(shí)例:

PreparedStatement pstmt = null;
try {
   String SQL = "select * from course where age=? and name=?";
   pstmt = conn.prepareStatement(SQL);   //創(chuàng)建對(duì)象
   pstmt.setInt(1,22);   //設(shè)置參數(shù)age的值 ,1表示第一個(gè)參數(shù)
   pstmt.setString(2,"chenjiabing");   //設(shè)置name的值,其中2表示第二個(gè)參數(shù)
   ResultSet res=pstmt.execteQuery();
   while(res.next)
   {
       ....
   }
   
   . . .
}
catch (SQLException e) {
   . . .
}
finally {
    if(connection!=null)
    {
        connection.close();
    }
    if(pstmt!=null)
    {
    pstmt.close();   //關(guān)閉
    }

   . . .
}

說(shuō)明:JDBC 中所有的參數(shù)都被用 ? 符號(hào)表示,這是已知的參數(shù)標(biāo)記。在執(zhí)行 SQL 語(yǔ)句之前,你必須賦予每一個(gè)參數(shù)確切的數(shù)值。其中PrepareStatement的常用函數(shù)如下,當(dāng)然Statement中的execute ,executeQuery ,executeUpdate也可以使用

void setInt(int parameterIndex, int x) parameterIndex表示第幾個(gè)?,這里的int x表示是mysql中定義的int類(lèi)型的值

void setString(int parameterIndex,String x) 為第parameterIndex個(gè)String類(lèi)型的?賦予x的值

其他的操作

這里還有delete,update,alter等一系列的操作都是和上面的一樣,就是把sql語(yǔ)句改變以下,如果使用的是靜態(tài)的就要為delete,update,使用Statement.execteUpdate(sql)這個(gè)函數(shù),當(dāng)然要使用動(dòng)態(tài)的也是executeUpdate函數(shù)

更多內(nèi)容請(qǐng)移步本人博客

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69947.html

相關(guān)文章

  • 干貨 | PHP就該這么學(xué)!

    摘要:梳理之后,目標(biāo)就會(huì)被分解成一個(gè)個(gè)需要完成的具體任務(wù)。勤學(xué)學(xué)習(xí)效率與效果取決于執(zhí)行力。這種選手即便幫他解決了問(wèn)題,他也學(xué)不到東西。拆分任務(wù)將目標(biāo)分解成具體可執(zhí)行的學(xué)習(xí)任務(wù)。搜集知識(shí)資源查閱官方文檔購(gòu)買(mǎi)書(shū)籍搜集網(wǎng)絡(luò)干貨文章。 前段時(shí)間和大家一起分享了一篇關(guān)于學(xué)習(xí)方法內(nèi)容《大牛與搬運(yùn)工的差距——學(xué)習(xí)方法的力量》。我們將學(xué)習(xí)過(guò)程分成八步,并借鑒了敏捷開(kāi)發(fā)的迭代思想,以達(dá)到自我迭代學(xué)習(xí)的效果。行...

    wushuiyong 評(píng)論0 收藏0
  • 做IT這幾年,我整理了這些干貨想要送給你!

    摘要:資源獲取方式根據(jù)下面的索引,大家可以選擇自己需要的資源,然后在松哥公眾號(hào)牧碼小子后臺(tái)回復(fù)對(duì)應(yīng)的口令,就可以獲取到資源的百度云盤(pán)下載地址。公眾號(hào)二維碼如下另外本文會(huì)定期更新,松哥有新資源的時(shí)候會(huì)及時(shí)分享給大家,歡迎各位小伙伴保持關(guān)注。 沒(méi)有一條路是容易的,特別是轉(zhuǎn)行計(jì)算機(jī)這條路。 松哥接觸過(guò)很多轉(zhuǎn)行做開(kāi)發(fā)的小伙伴,我了解到很多轉(zhuǎn)行人的不容易,記得松哥大二時(shí)剛剛決定轉(zhuǎn)行計(jì)算機(jī),完全不知道這...

    王晗 評(píng)論0 收藏0
  • Qt/Ununtu篇一:基于ubuntu操作系統(tǒng)下的Qt的安裝

    摘要:首先下載安裝包進(jìn)入官網(wǎng)下載地址,如圖所示順帶說(shuō)說(shuō)目錄結(jié)構(gòu)各種開(kāi)發(fā)工具安裝包,新舊都有可以下載開(kāi)發(fā)環(huán)境和源代碼。迷你版,目前是針對(duì)的版本。正式發(fā)布版,是與開(kāi)發(fā)版相對(duì)的穩(wěn)定版庫(kù)和開(kāi)發(fā)工具可以下載開(kāi)發(fā)環(huán)境和源代碼。 ...

    Galence 評(píng)論0 收藏0
  • 關(guān)于彈幕的制作第一篇一 樣式

    摘要:之前做了一個(gè)彈幕,樣式是這個(gè)樣子的詳情見(jiàn),記得評(píng)論 之前做了一個(gè)彈幕,樣式是這個(gè)樣子的 showImg(https://segmentfault.com/img/bVkYTy); 詳情見(jiàn) ,記得評(píng)論 http://blog.monokeroslun.xyz/xiang-mu-fen-xi-guan-yu-dan-mu-de-zhi-zuo/

    binaryTree 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<