成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java中的JDBC基本知識(shí)點(diǎn)都有哪些呢

java中的JDBC基本知識(shí)點(diǎn)都有哪些呢,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)是專業(yè)的延川網(wǎng)站建設(shè)公司,延川接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行延川網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

jdbc做為最基礎(chǔ)也最重要的javaAPI之一,其意義無(wú)言自明。作為java語(yǔ)言的初級(jí)使用者,免不了的要與數(shù)據(jù)庫(kù)打交道,而操作數(shù)據(jù)庫(kù)的最簡(jiǎn)單工具可以說(shuō)就是jdbc了。并且編碼者如果想學(xué)習(xí)掌握更高級(jí)的數(shù)據(jù)庫(kù)操作技術(shù)比如說(shuō)orm框架例如hibernate或者mybatis等,對(duì)其熟悉也是有事半功倍的效果。本著方便自己幫助他人的目的現(xiàn)把網(wǎng)上查找到的jdbc的基本知識(shí)點(diǎn)整理如下,

jdbc編程步驟:

注冊(cè)加載一個(gè)Drvier驅(qū)動(dòng):

Class.forName("oracle.jdbc.driver.OracleDriver");

創(chuàng)建數(shù)據(jù)庫(kù)連接

String url="jdbc:oracle:thin:@172.16.0.6:1521:tangjl";
String user="openlab";
String password="open123";
Connection Con=DriverManager.getConnection(url,user,password);

Connection 連接是通過(guò)DriverManager的靜態(tài)方法getConnection方法得到的這個(gè)方法的實(shí)質(zhì)時(shí)把參數(shù)傳到實(shí)際的Dirver中的connect()方法中來(lái)獲得數(shù)據(jù)庫(kù)連接.

Jdbc:oracle:this:(協(xié)議)@xxx.xxx.xxx:xxx(ip地址及端口號(hào)):xxx(使用數(shù)據(jù)庫(kù)名)

MySQL的url是jdbc:mysql://localhost:3306/test

獲得一個(gè)statement對(duì)象(PreparedStatement)

String sql="select * from a_yyy";
Statement s=con.createStatment();
PreparedStatement ps=con.prepareStatement(sql);

通過(guò)Statement執(zhí)行sql語(yǔ)句:

Statement接口代表了一個(gè)數(shù)據(jù)庫(kù)的狀態(tài),在向數(shù)據(jù)庫(kù)發(fā)送相應(yīng)的SQL語(yǔ)句時(shí),都需要?jiǎng)?chuàng)建Statement接口或者PreparedStatement接口。在具體應(yīng)用中,Statement主要用于操作不帶參數(shù)(可以直接運(yùn)行)的SQL語(yǔ)句,比如刪除語(yǔ)句、添加或更新。

Sta.execute():適合任何語(yǔ)句

sta.executeQuery(sql):適合查詢語(yǔ)句.返回一個(gè)查詢結(jié)果集.

sta.executeUpdate(sql);適合增刪改創(chuàng)建語(yǔ)句,返回值為影響記錄的條數(shù)

//////////////////////////////////////////////////

PreparedStatement:預(yù)編譯的Statement .

若是PreparedStatement:得到ps之后:

同樣的,若是增刪改創(chuàng)建的就用ps.executeUpdate();若是查詢則用ps.executeQuery()返回一個(gè)結(jié)果集;

預(yù)編譯的PreparedStatement,對(duì)于執(zhí)行同構(gòu)的sql語(yǔ)句來(lái)說(shuō),它的效率比較高,提升性能.

第一步:通過(guò)連接獲得PreparedStatement對(duì)象,用帶占位符(?)的sql語(yǔ)句構(gòu)造。

PreparedStatement pstm = con.preparedStatement(“select * from test where id=?”);

第二步:設(shè)置參數(shù)

pstm.setString(1,“ganbin”);

pstm.setDate(2,date);

第三步:執(zhí)行sql語(yǔ)句

Rs = pstm.excuteQuery();

statement發(fā)送完整的Sql語(yǔ)句到數(shù)據(jù)庫(kù)不是直接執(zhí)行而是由數(shù)據(jù)庫(kù)先編譯,再運(yùn)行,而PreparedStatement是先發(fā)送帶參數(shù)的Sql語(yǔ)句,再發(fā)送一組參數(shù)值.如果是同構(gòu)的sql語(yǔ)句,PreparedStatement的效率要比statement高。而對(duì)于異構(gòu)的sql則兩者效率差不多。

同構(gòu):兩個(gè)Sql語(yǔ)句可編譯部分是相同的,只有參數(shù)值不同。

異構(gòu):整個(gè)sql語(yǔ)句的格式是不同的

注意點(diǎn):1、使用預(yù)編譯的Statement編譯多條Sql語(yǔ)句一次執(zhí)行

2、可以跨數(shù)據(jù)庫(kù)使用,編寫通用程序

              3、能用預(yù)編譯時(shí)盡量用預(yù)編譯

處理查詢結(jié)果集:

只有執(zhí)行了select語(yǔ)句才有結(jié)果集

六關(guān)閉數(shù)據(jù)源

關(guān)閉細(xì)節(jié):最先得到的,最后關(guān)閉.

元數(shù)據(jù):是關(guān)于數(shù)據(jù)的信息,例如類型或者容量,通過(guò)JDBC API 可以訪問:

1 數(shù)據(jù)庫(kù)元數(shù)據(jù):

使用Connection.getMetadata方法返回DataBaseMetaData引用.

2 結(jié)果集元數(shù)據(jù)
a使用ResultSet.getMetadata方法返回ResultSetMetaData引用

B能使用getColumnCount等類的方法獲取結(jié)果集信息.(查api)

事務(wù)

事務(wù)處理三步曲:

① connection.setAutoCommit(false); //把自動(dòng)提交關(guān)閉

② 正常的DB 操作//若有一條SQL 語(yǔ)句失敗了,自動(dòng)回滾

③ connection.commit() //主動(dòng)提交或connection.rollback() //主動(dòng)回滾

完整代碼:

try{
   con.setAutoCommit(false); //step1 把自動(dòng)提交關(guān)閉
   Statement stm = con.createStatement();
   stm.executeUpdate("insert into person(id, name, age) values(520, 'X-Man', 18)");
   stm.executeUpdate("insert into Person(id, name, age) values(521, 'Super', 19)");
   //step2 正常的DB 操作
   con.commit(); //step3 成功主動(dòng)提交
} catch(SQLException e){
   con.rollback();//step3 失敗則主動(dòng)回滾
}

元數(shù)據(jù):

JDBC通過(guò)元數(shù)據(jù)(MetaData)來(lái)獲得具體的表的相關(guān)信息,可以查詢數(shù)據(jù)庫(kù)中有哪些表,表有哪些字段,以及字段的屬性等.MetaData中通過(guò)一系列g(shù)etXXX將這些信息返回給我們。

數(shù)據(jù)庫(kù)元數(shù)據(jù) DatabaseMetaData 使用connection.getMetaData()獲得

MetaData包括: 包含了關(guān)于數(shù)據(jù)庫(kù)整體元數(shù)據(jù)信息。 

結(jié)果集元數(shù)據(jù) ResultSetMetaData 使用resultSet.getMetaData()獲得

比較重要的是獲得表的列名、列數(shù)等信息。

結(jié)果集元數(shù)據(jù)對(duì)象:ResultSetMetaData meta = rs.getMetaData();

字段個(gè)數(shù):meta.getColomnCount();

字段名字:meta.getColumnName();

字段JDBC類型:meta.getColumnType();

字段數(shù)據(jù)庫(kù)類型:meta.getColumnTypeName();

數(shù)據(jù)庫(kù)元數(shù)據(jù)對(duì)象:DatabaseMetaData dbmd = con.getMetaData();

數(shù)據(jù)庫(kù)名=dbmd.getDatabaseProductName();

數(shù)據(jù)庫(kù)版本號(hào)=dbmd.getDatabaseProductVersion();

數(shù)據(jù)庫(kù)驅(qū)動(dòng)名=dbmd.getDriverName();

數(shù)據(jù)庫(kù)驅(qū)動(dòng)版本號(hào)=dbmd.getDriverVersion();

數(shù)據(jù)庫(kù)Url=dbmd.getURL();

該連接的登陸名=dbmd.getUserName();

關(guān)于java中的JDBC基本知識(shí)點(diǎn)都有哪些呢問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前文章:java中的JDBC基本知識(shí)點(diǎn)都有哪些呢
本文路徑:http://jinyejixie.com/article28/peoicp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、面包屑導(dǎo)航標(biāo)簽優(yōu)化、網(wǎng)站策劃、網(wǎng)站制作、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
嘉峪关市| 四平市| 汉阴县| 三河市| 武宣县| 新竹市| 新绛县| 林周县| 香河县| 遂昌县| 胶南市| 沙坪坝区| 搜索| 农安县| 汾西县| 武邑县| 乌兰察布市| 无为县| 靖宇县| 板桥市| 岫岩| 昭通市| 韶关市| 遂昌县| 甘德县| 五台县| 封开县| 太仓市| 耒阳市| 商河县| 台东市| 辉县市| 安宁市| 北宁市| 周口市| 佛坪县| 延庆县| 七台河市| 水富县| 巫山县| 雅江县|