五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > MySQL execute、executeUpdate、executeQuery的用法和區(qū)別

MySQL execute、executeUpdate、executeQuery的用法和區(qū)別

文章來源:365jz.com     點擊數(shù):1537    更新時間:2018-06-08 11:04   參與評論

execute、executeUpdate、executeQuery三者的用法和區(qū)別(及返回值)

一、boolean execute(String sql)

允許執(zhí)行查詢語句、更新語句、DDL語句。

返回值為true時,表示執(zhí)行的是查詢語句,可以通過getResultSet方法獲取結(jié)果;返回值為false時,執(zhí)行的是更新語句或DDL語句,getUpdateCount方法獲取更新的記錄數(shù)量。

例子:

public static void main(String[] args) { 
 
 Connection conn = null; 
 Statement stm = null; 
 ResultSet rs = null; 
 try { 
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
  conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Test;user=sa;password=sasa"); 
  stm = conn.createStatement(); 
  boolean ret = stm.execute("select * from stuinfo"); 
  if(ret){ 
  rs = stm.getResultSet(); 
  while(rs.next()){ 
   System.out.println("姓名:"+rs.getString("stuName")+"\t年齡:"+rs.getString("stuScore")); 
  } 
  } 
  ret = stm.execute("update stuinfo set stuScore=62 where stuname='張三'"); 
  int count = stm.getUpdateCount(); 
  if(!ret){ 
  System.out.println(count+"條數(shù)據(jù)修改成功!"); 
  } 
 } catch (ClassNotFoundException e) { 
  e.printStackTrace(); 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 }  
 }

二、int executeUpdate(String sql)

執(zhí)行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或 DELETE 語句,或者不返回任何內(nèi)容的 SQL 語句(如 SQL DDL 語句)。

返回值是更新的記錄數(shù)量

三、ResultSet executeQuery(String sql)

執(zhí)行給定的 SQL 語句,該語句返回單個 ResultSet 對象。

execute是executeUpdate與executeQuery的綜合


第一個例子顯示如何通過使用文字字符串來創(chuàng)建一個預制語句,以提供語句的文本:

mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|          5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;

第二個例子是相似的,不同的是提供了語句的文本,作為一個用戶變量:

mysql> SET @s = 'set @a = SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> PREPARE stmt2 FROM @s;
mysql> SET @a = 6;
mysql> SET @b = 8;
mysql> EXECUTE stmt2 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|         10 |
+------------+
mysql> DEALLOCATE PREPARE stmt2;

預制語句的SQL語法不能被用于帶嵌套的風格中。也就是說,被傳遞給PREPARE的語句本身不能是一個PREPARE, EXECUTE或DEALLOCATE PREPARE語句。

預制語句的SQL語法與使用預制語句API調(diào)用不同。例如,您不能使用mysql_stmt_prepare() C API函數(shù)來預備一個PREPARE, EXECUTE或DEALLOCATE PREPARE語句。

預制語句的SQL語法可以在已存儲的過程中使用,但是不能在已存儲的函數(shù)或觸發(fā)程序中使用。

    如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答??! 點擊進入論壇

    發(fā)表評論 (1537人查看,0條評論)
    請自覺遵守互聯(lián)網(wǎng)相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
    昵稱:
    最新評論
    ------分隔線----------------------------

    其它欄目

    · 建站教程
    · 365學習

    業(yè)務咨詢

    · 技術支持
    · 服務時間:9:00-18:00
    365建站網(wǎng)二維碼

    Powered by 365建站網(wǎng) RSS地圖 HTML地圖

    copyright © 2013-2024 版權所有 鄂ICP備17013400號