每次都會執行sql語句,相關資料庫都要執行sql語句的編譯。statement為一條sql語句生成執行計畫,
如果要執行兩條sql語句
select colume from table where colume=1;
select colume from table where colume=2;
會生成兩個執行計畫
一千個查詢就生成一千個執行計畫!
connection con = drivermanager.getconnection(url, user, pass);statement 介面提供了三種執行 sql 語句的方法:executequery、executeupdate 和execute。使用哪乙個方法由 sql 語句所產生的內容決定。string sql = "";
statement stat = con.createstatement(sql);
resultset rs = stmt.executequery("select a, b, c from table2");
stat.exceutequery():
返回值是乙個結果集result。該結果集永遠不能為null。stat.executeupdate():用於產生單個結果集的語句,例如 select 語句
statement stat = con.createstatement(sql);
resultset rs = stat.executequery();
返回值是int型資料。該值代表執行insert,update,delete語句後的更新行數。若為0,則表示沒有執行成功!stat.execute():用於執行 insert、update 或 delete 語句以及 sqlddl(資料定義語言)語句,例如 create table 和 drop table。
stat.executeupdate(sql);
用於執行返回多個結果集、多個更新計數或二者組合的語句。
用於處理動態sql語句,在執行前會有乙個預編譯過程,這個過程是有時間開銷的,雖然相對資料庫的操作,該時間開銷可以忽略不計,(1) preparedstatement介面繼承statement,preparedstatement 例項包含已編譯的 sql 語句,所以其執行速度要快於 statement 物件。(2)作為 statement 的子類,preparedstatement 繼承了 statement 的所有功能。三種方法execute、executequery和executeupdate已被更改以使之不再需要引數但是preparedstatement的預編譯結果會被快取,下次執行相同的預編譯語句時,就不需要編譯,只要將引數直接傳入編譯過的語句執行**
中就會得到執行,所以,對於批量處理可以大大提高效率。
connection con = drivermanager.getconnection(url, user, pass);string sql = "";
preparestatement pstmt = con.preparestatement(sql);
resultset rs = pstmt.executequery("select a, b, c from table2");
preparedstatement介面繼承statement。所以也為executequery、executeupdate 和execute三種。pstmt.exceutequery():
返回值是乙個結果集result。該結果集永遠不能為null。pstmt.executeupdate():用於產生單個結果集的語句,例如 select 語句
statement stat = con.createstatement(sql);
resultset rs = stat.executequery();
返回值是int型資料,該值代表執行insert,update,delete語句後的更新行數。若為0,則表示沒有執行成功!pstmt.execute():用於執行 insert、update 或 delete 語句以及 sqlddl(資料定義語言)語句,例如 create table 和 drop table。
stat.executeupdate(sql);
用於執行返回多個結果集、多個更新計數或二者組合的語句。該語句可以是任何種類的 sql 語句
execute 方法返回乙個 boolean 值,以指示第乙個結果的形式。必須呼叫 getresultset 或 getupdatecount 方法來檢索結果,並且必須呼叫 getmoreresults 移動到任何後面的結果。
返回:
如果第乙個結果是 resultset 物件,則返回 true;如果第乙個結果是更新計數或者沒有結果,則返回 false
意思就是如果是查詢的話返回true,如果是更新或插入的話就返回false了;
stmt.executeupdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");//stmt是statement物件例項perstmt = con.preparestatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
pstmt.setstring(1,var1);
pstmt.setstring(2,var2);
pstmt.setstring(3,var3);
pstmt.setstring(4,var4);
pstmt.executeupdate(); //prestmt是 preparedstatement 物件例項
可防止暴力傳密碼。
JDBC的連線步驟
1 載入 註冊 資料庫驅動 到jvm 2 建立 獲取 資料庫連線。3 建立 獲取 資料庫操作物件。4 定義操作的sql語句。5 執行資料庫操作。6 獲取並操作結果集。7 關閉物件,資料庫資源 關閉結果集 關閉資料庫操作物件 關閉連線 public class jdbctest catch excep...
JDBC資料庫連線步驟
1 載入資料庫驅動 class.forname com.mysql.jdbc.driver 2 建立資料庫連線池 conn drivermanager.getconnection jdbc mysql localhost 3306 test2?user root password 1234 3 由當...
jdbc資料庫連線步驟
筆記 連線資料庫的幾大步驟 1.載入驅動 class.forname 資料庫驅動的名稱 2.建立連線 connection conn driver.getconnection 路徑 使用者名稱 密碼 埠號 3.建立預編譯物件 statement stat conn.createstatement 4...