国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JDBC干貨篇一

hiyang / 2670人閱讀

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

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

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

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

加載數(shù)據(jù)庫驅(qū)動

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

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

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

DriverManager.getConnection(String url)

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

DriverManager.getConnection(String url,String user,String password) 這里的urljdbc:mysql://localhost:3306/java_demo,其中java_demo表示你自己創(chuàng)建的數(shù)據(jù)庫名字,urser表示當(dāng)前數(shù)據(jù)庫的登錄的用戶名,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ù)庫驅(qū)動
        Connection conn=DriverManager.getConnection(url,properties);   //連接數(shù)據(jù)庫
        
        //第三種方法
        
        Connection conn=DriverManager.getConnection(url,user,password);   //連接數(shù)據(jù)庫 
        

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

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

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

靜態(tài)查詢

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

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

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

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

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

實例:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

動態(tài)查詢

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

實例:

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

   . . .
}

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

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

void setString(int parameterIndex,String x) 為第parameterIndexString類型的?賦予x的值

其他的操作

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69947.html

相關(guān)文章

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

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

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

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

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

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

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

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

    binaryTree 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<