日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JDBC笔记(1)

發(fā)布時(shí)間:2023/12/14 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC笔记(1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JDBC第一天
上午:
一.JDBC原理概述


1,JDBC是一套協(xié)議,是JAVA開(kāi)發(fā)人員和數(shù)據(jù)庫(kù)廠商達(dá)成的協(xié)議,也就是由Sun定義一組接口,由數(shù)據(jù)庫(kù)廠商來(lái)實(shí)現(xiàn),并規(guī)定了JAVA開(kāi)發(fā)人員訪問(wèn)數(shù)據(jù)庫(kù)所使用的方法的調(diào)用規(guī)范。


2,JDBC的實(shí)現(xiàn)是由數(shù)據(jù)庫(kù)廠商提供,以驅(qū)動(dòng)程序形式提供。


3,JDBC在使用前要先加載驅(qū)動(dòng)。
JDBC對(duì)于使用者要有一致性,對(duì)不同的數(shù)據(jù)庫(kù)其使用方法都是相同的。


驅(qū)動(dòng)開(kāi)發(fā)必須要實(shí)現(xiàn)Driver接口。
數(shù)據(jù)庫(kù)驅(qū)動(dòng)的實(shí)現(xiàn)方式
JDBC-ODBC橋接式
JDBC網(wǎng)絡(luò)驅(qū)動(dòng),這種方式是通過(guò)中間服務(wù)器的協(xié)議轉(zhuǎn)換來(lái)實(shí)現(xiàn)的
JDBC+本地驅(qū)動(dòng),這種方式的安全性比較差。
JDBC驅(qū)動(dòng),由數(shù)據(jù)庫(kù)廠商實(shí)現(xiàn)。


二.JDBC的API


java.sql包和javax.sql包
Driver接口(驅(qū)動(dòng)),在加載某一 Driver 類時(shí),它應(yīng)該創(chuàng)建自己的實(shí)例并向 DriverManager 注冊(cè)該實(shí)例。這意味著用戶可以通過(guò)調(diào)用以下程序加載和注冊(cè)一個(gè)驅(qū)動(dòng)程序?
Class.forName("oracle.jdbc.driver.OracleDriver")
DriverManager類(驅(qū)動(dòng)管理器),它可以創(chuàng)建連接,它本身就是一個(gè)創(chuàng)建Connection的工廠(Factory)。
Connection接口,會(huì)根據(jù)不同的驅(qū)動(dòng)產(chǎn)生不同的連接
Statement接口,發(fā)送sql語(yǔ)句
ResultSet接口(結(jié)果集),是用來(lái)接收select語(yǔ)句返回的查詢結(jié)果的。其實(shí)質(zhì)類似于集合。


下午:
三.JDBC應(yīng)用步驟
1,注冊(cè)加載一個(gè)driver驅(qū)動(dòng)
2,創(chuàng)建數(shù)據(jù)庫(kù)連接(Connection)
3,創(chuàng)建一個(gè)Statement(發(fā)送sql)
4,執(zhí)行sql語(yǔ)句
5,處理sql結(jié)果(select語(yǔ)句)
6,關(guān)閉Statement
7,關(guān)閉連接Connection。


注意:6,7兩個(gè)步驟勢(shì)必須要做的,因?yàn)檫@些資源是不會(huì)自動(dòng)釋放的,必須要自己關(guān)閉


訪問(wèn)Oracle的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)名字叫ojdbc14.jar,要使用這個(gè)驅(qū)動(dòng)程序,要先將他加到環(huán)境變量CLASSPATH中。


? ? 注冊(cè)加載驅(qū)動(dòng)driver,也就是強(qiáng)制類加載
? ? Class.forName(Driver包名.Driver類名)。


? ? Driver d=new Driver類();//注意:這個(gè)方法不能用參數(shù)來(lái)構(gòu)造
? ? DriverManager.registerDriver(d);




? ? Oracle的Driver的全名oracle.jdbc.driver.OracleDriver
? ? mysql的Driver的全名com.mysql.jdbc.Driver
? ? SQLServer的Driver的全名com.microsoft.jdbc.sqlserver.SQLServerDriver


? ? 創(chuàng)建連接
? ? DriverManager.getConnection(String url,String username,String password);
? ? Connection連接是通過(guò)DriverManager的靜態(tài)方法getConnection(.....)來(lái)得到的,這個(gè)方法的實(shí)質(zhì)是把參數(shù)傳到實(shí)際的Driver中的connect()方法中來(lái)獲得數(shù)據(jù)庫(kù)連接的。
? ? Oracle的URL值是由連接數(shù)據(jù)庫(kù)的協(xié)議和數(shù)據(jù)庫(kù)的IP地址及端口號(hào)還有要連接的數(shù)據(jù)庫(kù)的庫(kù)名(DatebaseName)
? ? Oracle URL的格式
? ? jdbc:oracle:thin:(協(xié)議)@XXX.XXX.X.XXX:XXXX(IP地址及端口號(hào)):XXXXXXX(所使用的庫(kù)名)
? ? 例:jdbc:oracle:thin:@192.168.0.20:1521:tarenadb
? ? MySql URL的寫法
? ? 例: jdbc:mysql://localhost:3306/tarena
? ? SQLServer URL的寫法
? ? 例:jdbc:microsoft:sqlserver://localhost:1433/test


? ? java -Djdbc.drivers=驅(qū)動(dòng)的完整類名


? ? 使用虛擬機(jī)參數(shù),加載驅(qū)動(dòng) -D表示為虛擬機(jī)參數(shù)賦值
? ? java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver:com.mysql.jdbc.Driver
? ?
四.JDBC基本方法?
? ? DriverManager:如果有多個(gè)驅(qū)動(dòng)可用的話,DriverManager會(huì)根據(jù)URL選擇其中一個(gè)可用的驅(qū)動(dòng). ?
? ??
? ? Driver:可以選擇固定的驅(qū)動(dòng)
? ? Driver driver = new oracle.jdbc.driver.OracleDriver();
? ? String user = "sd0613";
String password = "sd0613";
Properties prop = new Properties();
prop.setProperty("user",user);
prop.setProperty("password",password);
? ? driver.connect(url,properties);?
? ??
? ? executeQuery(sqlString);//返回結(jié)果集
? ? executeUpdate(sqlString);//返回值為該次操作影響的記錄條數(shù),create table返回0
? ? execute(sqlString);
? ? //適用于不知道具體的操作是什么,返回值是boolean類型的
? ? //如果返回值是true,代表執(zhí)行查詢操作;否則代表執(zhí)行更新操作.
? ??
? ? ResultSet
? ? next()方法:
? ? 1.判斷是否存在下一條記錄
? ? 2.將游標(biāo)移向下一條記錄 ??
? ? getXXX(字段名或字段序號(hào))//注意:字段序號(hào)從1開(kāi)始
? ??
? ? 關(guān)閉問(wèn)題:
? ? 使用Connection對(duì)象獲得一個(gè)Statement,Statement中的executeQuery(String sql) 方法可以使用select語(yǔ)句查詢,并且返回一個(gè)結(jié)果集 ResultSet通過(guò)遍歷這個(gè)結(jié)果集,可以獲得select語(yǔ)句的查詢結(jié)果,ResultSet的next()方法會(huì)操作一個(gè)游標(biāo)從第一條記錄的前邊開(kāi)始讀取,直到最后一條記錄。executeUpdate(String sql) 方法用于執(zhí)行DDL和DML語(yǔ)句,可以u(píng)pdate,delete操作。
注意:要按先ResultSet結(jié)果集,后Statement,最后Connection的順序關(guān)閉資源,因?yàn)镾tatement和ResultSet是需要連接時(shí)才可以使用的,所以在使用結(jié)束之后有可能其他的Statement還需要連接,所以不能先關(guān)閉Connection。

總結(jié)

以上是生活随笔為你收集整理的JDBC笔记(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。