淺析JDBC常用的接口——JDBC的Statement接口、PreparedStatement接口
后臺(tái)回復(fù)“Java”即可獲贈(zèng)Java學(xué)習(xí)資料
大家好,我是Java進(jìn)階者。今天給大家繼續(xù)分享JDBC技術(shù)。
一、前言
在《淺析JDBC常用的類和接口——JDBC的Driver接口、DriverManager類、Connection接口》文章中,我們介紹了使用Java語言來連接數(shù)據(jù)庫。本文主要給大家介紹在Java中,通過連接數(shù)據(jù)庫之后,如何來執(zhí)行SQL的語句,接下來小編帶大家一起來學(xué)習(xí)!
二、Statement接口
1.Statement接口是用于執(zhí)行不帶參數(shù)的比較簡(jiǎn)單SQL的語句。Statement對(duì)象是由Connection對(duì)象方法createStatement()創(chuàng)建,該對(duì)象會(huì)把SQL語句傳遞給數(shù)據(jù)庫執(zhí)行,然后返回?cái)?shù)據(jù)庫處理的結(jié)果。
2.Statement常用的方法
| 常用的方法: |
|---|
| 1)boolean execute(String sql):執(zhí)行給定的SQL語句。 |
| 2)ResultSet executeQuery(String sql):執(zhí)行給定的SQL查詢語句。 |
| 3)int executeUpdate(String sql):執(zhí)行數(shù)據(jù)更新SQL語句。 |
| 4)Connection getConnection():獲取數(shù)據(jù)庫的連接。 |
| 5)int getMaxRows():獲取最大行數(shù)。 |
| 6)ResultSet getResultSet():獲取ResultSet對(duì)象。 |
| 7)void close():立即釋放連接和JDBC資源。 |
三、通過一個(gè)案例了解Statement接口的用法
1.首先導(dǎo)入拓展包“mysql-connector-java-5.1.7-bin.jar”,在Ecilpse編輯軟件的當(dāng)前項(xiàng)目右鍵選擇“Bulid Path”,再選擇“Configure Build Path...”,選擇Libraies,在右邊有個(gè)“Add External JARs...”按鈕把這個(gè)拓展包加進(jìn)來,然后點(diǎn)擊“OK”。具體操作如下圖所示:


2.在上面介紹了Statement接口的基礎(chǔ)知識(shí)點(diǎn),接下來,小編通過一個(gè)案例帶大家一起了解Statement接口的用法,代碼如下所示:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class Example26 {public static void main(String[] args) {// TODO Auto-generated method stubString driver="com.mysql.jdbc.Driver";try {//加載驅(qū)動(dòng)Class.forName(driver);//數(shù)據(jù)庫地址,本機(jī)、端口號(hào)3306、數(shù)據(jù)庫名為testString url="jdbc:mysql://localhost:3306/test";//用戶名String user="root";//密碼String pwd="168168";//連接數(shù)據(jù)庫Connection conn=DriverManager.getConnection(url,user,pwd);//創(chuàng)建Statement對(duì)象Statement stmt=conn.createStatement();String sql="select * from student";//執(zhí)行SQL語句stmt.executeQuery(sql);System.out.println(stmt);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
效果圖如下所示:

在上面代碼中,首先是加載驅(qū)動(dòng)程序,之后,進(jìn)行Mysql數(shù)據(jù)庫的連接,創(chuàng)建Statement對(duì)象,使用executeQuery()方法執(zhí)行SQL語句。
四、PreparedStatement接口
1.PreparedStatement接口是用于預(yù)執(zhí)行SQL語句的對(duì)象。SQL語句預(yù)編譯存儲(chǔ)在PreparedStatement對(duì)象中,可以使用PreparedStatement對(duì)象多次高效執(zhí)行SQL語句。
2.PreparedStatement常用的方法
| 常用的方法: |
|---|
| 1)void addBatch():將一組參數(shù)添加到此 PreparedStatement 對(duì)象的批處理命令中。 |
| 2)void setDouble(int parameterIndex, double x):將指定參數(shù)設(shè)置為給定 Java double 值。 |
| 3)void setFloat(int parameterIndex, float x):將指定參數(shù)設(shè)置為給定 Java REAL 值。 |
| 4)void setInt(int parameterIndex, int x):將指定參數(shù)設(shè)置為給定 Java int 值。 |
| 5)void setLong(int parameterIndex, long x):將指定參數(shù)設(shè)置為給定 Java long 值。 |
| 6)void setString(int parameterIndex, String x):將指定參數(shù)設(shè)置為給定 Java String 值。 |
| 7)void setObject(int parameterIndex, Object x):使用給定對(duì)象設(shè)置指定參數(shù)的值 |
| 8)boolean execute():在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 語句,該語句可以是任何種類的 SQL 語句。 |
| 9)ResultSet executeQuery():在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 查詢,并返回該查詢生成的 ResultSet 對(duì)象。 |
| 10)int executeUpdate():在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 語句,該語句必須是一個(gè) SQL 數(shù)據(jù)操作語言(Data Manipulation Language,DML)語句,比如 INSERT、UPDATE 或 DELETE 語句;或者是無返回內(nèi)容的 SQL 語句,比如 DDL 語句。 |
上述方法引用自文檔《JavaTM Platform Standard Ed. 6》
五、通過一個(gè)案例了解PreparedStatement接口的用法
1.首先導(dǎo)入拓展包“mysql-connector-java-5.1.7-bin.jar”,在Ecilpse編輯軟件的當(dāng)前項(xiàng)目右鍵選擇“Bulid Path”,再選擇“Configure Build Path...”,選擇Libraies,在右邊有個(gè)“Add External JARs...”按鈕把這個(gè)拓展包加進(jìn)來,然后點(diǎn)擊“OK”。具體操作的圖片在上面。
2.在上面介紹了PreparedStatement接口的基礎(chǔ)知識(shí)點(diǎn),接下來,小編通過一個(gè)案例帶大家一起了解PreparedStatement接口的用法,代碼如下所示:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class Example25 {public static void main(String[] args) {//定義一個(gè)字符串來保存com.mysql.jdbc的Driver類路徑String driver="com.mysql.jdbc.Driver";try {//加載驅(qū)動(dòng)Class.forName(driver);//數(shù)據(jù)庫地址,本機(jī)、端口號(hào)3306、數(shù)據(jù)庫名為testString url="jdbc:mysql://localhost:3306/test";//用戶名String user="root";//密碼String pwd="168168";//連接數(shù)據(jù)庫Connection conn=DriverManager.getConnection(url,user,pwd);//創(chuàng)建PreparedStatement對(duì)象PreparedStatement pst=conn.prepareStatement("select * from student where id=?");String id="A11";pst.setString(1,id);System.out.println(pst);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
效果圖如下所示:

在上面代碼中,首先是加載驅(qū)動(dòng)程序,之后進(jìn)行Mysql數(shù)據(jù)庫的連接,創(chuàng)建PreparedStatement對(duì)象包含了"select * from student where id=?",它發(fā)送給數(shù)據(jù)庫管理系統(tǒng),并且為執(zhí)行做了準(zhǔn)備。
六、總結(jié)
1.本文介紹了JDBC的Statement和PreparedStatement接口。
2.Statement接口是用于執(zhí)行不帶參數(shù)的比較簡(jiǎn)單SQL的語句。Statement對(duì)象是由Connection對(duì)象方法createStatement()創(chuàng)建,該對(duì)象會(huì)把SQL語句傳遞給數(shù)據(jù)庫執(zhí)行,然后返回?cái)?shù)據(jù)庫處理的結(jié)果。文中介紹了它的常用方法的使用,并通過一個(gè)案例來幫助大家了解Statement接口的用法。
3.PreparedStatement接口是用于預(yù)執(zhí)行SQL語句的對(duì)象。SQL語句預(yù)編譯存儲(chǔ)在PreparedStatement對(duì)象中,可以使用PreparedStatement對(duì)象多次高效執(zhí)行SQL語句。文中介紹了它的常用方法的使用,并通過一個(gè)案例來幫助大家了解PreparedStatement接口的用法。
4.希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!
最后需要拓展包的小伙伴,可以在公眾號(hào)后臺(tái)回復(fù)“拓展包”關(guān)鍵字進(jìn)行獲取。
我是Java進(jìn)階者,希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!歡迎大家加我微信,有問題可以隨時(shí)幫大家解決噢,交個(gè)朋友也好哇~
------------------- End -------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Java學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
