更新時(shí)間:2021-02-20 17:02:52 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1535次
JDBC的主要還是用來(lái)和各種數(shù)據(jù)庫(kù)建立連接,然后發(fā)送SQL語(yǔ)句,處理結(jié)果。那么我們?nèi)绾问褂肑DBC和數(shù)據(jù)庫(kù)建立連接呢?本文我們就來(lái)為大家介紹使用JDBC的基本步驟,帶大家熟悉JDBC的使用方法。
1、注冊(cè)驅(qū)動(dòng)
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
JDBC中規(guī)定,驅(qū)動(dòng)類(lèi)在被加載時(shí),需要自己“主動(dòng)”把自己注冊(cè)到DriverManger中,如何注冊(cè)一個(gè)驅(qū)動(dòng)呢?上面我們好像使用的是反射,但是反射只是實(shí)現(xiàn)了注冊(cè)的功能,追究其原理,我們還需要到com.mysql.jdbc.Driver類(lèi)的源代碼中找尋答案。
也就是說(shuō)我們注冊(cè)驅(qū)動(dòng)的時(shí)候只是new了自己,也就是Driver,既然這樣我們直接把注冊(cè)驅(qū)動(dòng)類(lèi)的代碼修改為加載驅(qū)動(dòng)類(lèi)。也可以實(shí)現(xiàn)同樣的功能,于是就使用Class.forName(“com.mysql.jdbc.Driver”); 代替了,形式也更加的簡(jiǎn)單。
2、建立連接
在分析原理的時(shí)候意思就是有了驅(qū)動(dòng),我們還要和我們的數(shù)據(jù)庫(kù)建立連接。這個(gè)很簡(jiǎn)單,既然是數(shù)據(jù)庫(kù),我們首先需要指定我們使用的數(shù)據(jù)庫(kù)是哪一個(gè),還有用戶(hù)名和密碼。
//DriverManager.getConnection("jdbc:mysql://localhost/test?user=SIHAI&password=SIHAI");
//建立連接 參數(shù)一: 協(xié)議 + 訪問(wèn)的數(shù)據(jù)庫(kù) , 參數(shù)二: 用戶(hù)名 , 參數(shù)三: 密碼。
conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
3、創(chuàng)建statement
獲取了連接之后,下面我們就可以獲取Statement。Statement是用來(lái)向數(shù)據(jù)庫(kù)發(fā)送要執(zhí)行的SQL語(yǔ)句的。跟數(shù)據(jù)庫(kù)打交道,一定需要這個(gè)對(duì)象
st = conn.createStatement();
Statement最為重要的方法是:
int executeUpdate(String sql):執(zhí)行更新操作,即執(zhí)行insert、update、delete語(yǔ)句,其實(shí)這個(gè)方法也可以執(zhí)行create table、alter table,以及drop table等語(yǔ)句,但我們很少會(huì)使用JDBC來(lái)執(zhí)行這些語(yǔ)句;
(2)ResultSet executeQuery(String sql):執(zhí)行查詢(xún)操作,執(zhí)行查詢(xún)操作會(huì)返回ResultSet,即結(jié)果集。
4、執(zhí)行SQL,得到ResultSet
String sql = "select * from t_stu";
rs = st.executeQuery(sql);
ResultSet就是一張二維的表格,我們可以調(diào)用rs對(duì)象的next()方法把“行光標(biāo)”向下移動(dòng)一行,當(dāng)?shù)谝淮握{(diào)用next()方法時(shí),“行光標(biāo)”就到了第一行記錄的位置,這時(shí)就可以使用ResultSet提供的getXXX(int col)方法來(lái)獲取指定列的數(shù)據(jù)了。當(dāng)然里面的方法還很多。
(1)String getString(int columnIndex):獲取指定列的String類(lèi)型數(shù)據(jù);
(2)int getInt(int columnIndex):獲取指定列的int類(lèi)型數(shù)據(jù);
(3) double getDouble(int columnIndex):獲取指定列的double類(lèi)型數(shù)據(jù);
(4)boolean getBoolean(int columnIndex):獲取指定列的boolean類(lèi)型數(shù)據(jù);
(5)Object getObject(int columnIndex):獲取指定列的Object類(lèi)型的數(shù)據(jù)。
(6)String getString(String columnName):獲取名稱(chēng)為columnName的列的String數(shù)據(jù);
(7)int getInt(String columnName):獲取名稱(chēng)為columnName的列的int數(shù)據(jù);
(8)double getDouble(String columnName):獲取名稱(chēng)為columnName的列的double數(shù)據(jù);
(9)boolean getBoolean(String columnName):獲取名稱(chēng)為columnName的列的boolean數(shù)據(jù);
(10)Object getObject(String columnName):獲取名稱(chēng)為columnName的列的Object數(shù)據(jù);
5. 遍歷結(jié)果集
? while(rs.next()){
? int id = rs.getInt("id");
? String name = rs.getString("name");
? int age = rs.getInt("age");
? System.out.println("id="+id + "===name="+name+"==age="+age);
?
? }
6. 釋放資源
if (rs != null) {
???????try {
????????????rs.close();
????????} catch (SQLException sqlEx) { } // ignore
????????rs = null;
????}
結(jié)合上述的使用JDBC的基本步驟,我們?cè)谑褂肑DBC的時(shí)候也能夠輕松容易很多。在本站的JDBC教程中,對(duì)JDBC的使用有更加深入的講解,結(jié)合各種SQL語(yǔ)句,對(duì)我們使用JDBC很有意義。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743