executeQuery()是干什么用的?實現什么功能啊?執行查詢(更新查詢)
tp中的execute和query的區別初學thinkphp的時候,很多人都對execute()和query()方法的區別搞不懂,本文就此淺析二者的區別 。
大家都知道,thinkphp中execute()和query()方法都可以在參數里直接輸入sql語句 。但是不同的是execute()通常用來執行insert或update等sql語句,而query常用來執行select等語句 。
execute()方法將返回影響的記錄數,如果執行sql的select語句的話,返回的結果將是表的總記錄數:
代碼如下:
$model = m( mytable );
$result = $model ->execute( 'update mytable set name=aaa where id=11'); //將返回總行數
query()方法將返回數據集:
代碼如下:
$model = m( mytable );
$result = $model ->query( 'select * frommytable' ); //將返回array()
executeQuery()參數用法?p_type等是你的變量名而不是你要插入的值,如果你直接寫里面那么就將“p_typ”這個當作值插入數據庫了,而不是p_typ變量里的內容
java關于stmt.executeQuery的執行語句Update 語句是用 stmt.executeUpdate() 方法,而不是用 executeQuery
另外,
String SQL_Update = new String();
SQL_Update = "UPDATE nimak.user SET name = \"周\" WHERE user = \"root\"";
這兩行不用這樣寫,這樣寫相當于初始化了兩個字符串了,直接這樣寫:
String SQL_Update = "UPDATE nimak.user SET name = \"周\" WHERE user = \"root\"";
java程序執行到executequery()就往下不執行了可能是打開了oracle中的sql運行工具,并且連接到scott數據庫,所以不能同時查詢,關閉就行了!
Java中executeQuery方法的問題你要用變量作為參數的話,不能用Statement,要用PreparedStatement.
String
target
=
gui.txt.getText();
PreparedStatement
pstmt
=
con.prepareStatement("Select
class
from
table
where
name
=
?");
pstmt.SetString(1,
target
);
然后
resultSet
rs
=
pstmt.executeQuery();
就可以了 。這PreparedStatement是專用來設置參數用的,Statement只能是在sql完全確定的情況下才能用 。
在Java中如何使用execute()、executeQuery()、executeUpdate()三個方法execute(String sql)
執行給定的 SQL 語句,該語句可能返回多個結果 。
executeQuery(String sql)
執行給定的 SQL 語句,該語句返回單個 ResultSet 對象
executeUpdate(String sql)
執行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或 DELETE 語句,或者不返回任何內容的 SQL 語句(如 SQL DDL 語句)
頭2種一般在查詢中使用
最后一個在插入、更新、刪除時使用
java中executeQuery是什么意思執行數據庫查詢語句 這個方法的參數是一個sql語句 比如
statement.executeQuery("select * from tb_user")
java中的executeQuery方法返回List集合和resultSet哪個更好Table保存的什么類的內容,就返回一個 List,方便調用者使用;List不是個好的選擇 。
一個人寫著玩,隨便了 。
java中接口是什么意思接口可以說是為了提供一種規范,方便其他地方使用此規范的一種技術 。
在現實生活中可以接口的例子很多,比如USB接口 。它定義了USB口的大小,4跟USB線每根線的顏色、作用等 。在軟件方面定義了供CPU調用的一些方法 。比如識別、啟動、彈出、傳送數據等等 。采用USB接口的設備很多,有鼠標、鍵盤、u盤等等 。每種設備實現識別、啟動、彈出、傳送數據的方式不一樣 。
在java中,接口定義了一些方法,但是不用去實現,而由實現了此接口的類去實現接口中定義的方法,比如有一個接口叫做USB,有一個類叫做鼠標,USB接口定義了啟動、傳送數據等方法 。那么鼠標實現了USB接口,就得實現啟動、傳送數據方法 。另外一個類叫做U盤也實現了USB接口、那么它也要實現啟動、傳送數據 。在鼠標或者U盤連接上電腦后,CPU發現有USB設備連接上電腦了(cpu并不知道是什么設備,只知道是USB設備),這個時候CPU會發出啟動命令來啟動USB設備,而啟動鼠標和啟動U盤具體流程是不一樣的,這些啟動流程都是有鼠標和U盤各自來實現的 。
java execute,executeQuery和executeUpdate之間的區別java中execute,executeQuery和executeUpdate之間的區別如下:
1、總的概括如下:
executeQuery()—直接從數據庫中獲取數據,只能執行select語句
executeUpdate()—對數據庫進行insert,delete或者update
execute()—所有對數據庫的操作都可以使用此方法
2、具體區別如下:
executeQuery() :通常用于讀取數據庫的內容 。以結果集的形式輸出數據 。一般使用于SELECT語句 。
executeUpdate() — 通常用于改變數據庫 。一般來說DROP TABLE或數據庫,插入到表,更新表,從TABLE語句刪除將在此使用 。輸出將在INT的形式 。此int值表示受到查詢的行數 。
execute() — 如果用戶不知道要用于執行SQL語句該方法,可以使用這種方法 。這將返回一個布爾值 。TRUE表示結果是一個ResultSet,FALSE表示它有它表示受查詢的行數的int值 。
java execute,executeQuery和executeUpdate之間的區別JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之間的區別方法executeQuery 用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。方法executeUpdate 用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (數據定義語言)語句 。創建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行 。也可以從它的名字里看出,方法 executeUpdate 也被用于執行更新表 SQL 語句 。實際上,相對于創建表來說,executeUpdate 用于更新表的時間更多,因為表只需要創建一次,但經常被更新 。方法execute: 用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能 execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程 或動態執行未知 SQL 字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
java execute,executeQuery和executeUpdate之間的區別PreparedStatement接口提供了三種執行SQL語句的方法:executeQuery、executeUpdate和execute 。使用哪一個方法由SQL語句所產生的內容決定 。1、方法executeQuery用于產生單個結果集的語句,例如SELECT語句 。被使用最多的執行SQL語句的方法是executeQuery 。這個方法被用來執行SELECT語句,它幾乎是使用最多的SQL語句 。2、方法executeUpdate用于執行INSERT、UPDATE或DELETE語句以及SQLDDL(數據定義語言)語句,例如CREATETABLE和DROPTABLE 。INSERT、UPDATE或DELETE語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate的返回值是一個整數,指示受影響的行數(即更新計數) 。對于CREATETABLE或DROPTABLE等不操作行的語句,executeUpdate的返回值總為零 。使用executeUpdate方法是因為在createTableCoffees中的SQL語句是DDL(數據定義語言)語句 。創建表,改變表,刪除表都是DDL語句的例子,要用executeUpdate方法來執行 。你也可以從它的名字里看出,方法executeUpdate也被用于執行更新表SQL語句 。實際上,相對于創建表來說,executeUpdate用于更新表的時間,因為表只需要創建一次,但經常被更新 。
java中的UnsupportedOperationException什么意思?java.lang.UnsupportedOperationException是不支持功能異常,常常出現在使用Arrays.asList()后調用add,remove這些method時 。
這是由于:
Arrays.asList() 返回java.util.Arrays$ArrayList,而不是ArrayList 。Arrays$ArrayList和ArrayList都是繼承AbstractList,remove,add等 method在AbstractList中是默認throw UnsupportedOperationException而且不作任何操作 。ArrayList override這些method來對list進行操作,但是Arrays$ArrayList沒有override remove(int),add(int)等,所以throw UnsupportedOperationException 。
解決方法是使用Iterator,或者轉換為ArrayList 。
java execute,executeQuery和executeUpdate之間的區別java中execute,executeQuery和executeUpdate之間的區別如下:1、總的概括如下:executeQuery()—直接從數據庫中獲取數據,只能執行select語句executeUpdate()—對數據庫進行insert,delete或者updateexecute()—所有對數據庫的操作都可以使用此方法2、具體區別如下:executeQuery() :通常用于讀取數據庫的內容 。以結果集的形式輸出數據 。一般使用于SELECT語句 。executeUpdate() — 通常用于改變數據庫 。一般來說DROP TABLE或數據庫,插入到表,更新表,從TABLE語句刪除將在此使用 。輸出將在INT的形式 。此int值表示受到查詢的行數 。execute() — 如果用戶不知道要用于執行SQL語句該方法,可以使用這種方法 。這將返回一個布爾值 。TRUE表示結果是一個ResultSet,FALSE表示它有它表示受查詢的行數的int值 。
在Java中如何使用execute()、executeQuery()、executeUpdate()三個方法execute(String
sql)
執行給定的
SQL
語句,該語句可能返回多個結果 。
executeQuery(String
sql)
執行給定的
SQL
語句,該語句返回單個
ResultSet
對象
executeUpdate(String
sql)
執行給定
SQL
語句,該語句可能為
INSERT、UPDATE
或
DELETE
語句,或者不返回任何內容的
SQL
語句(如
SQL
DDL
語句)
頭2種一般在查詢中使用
最后一個在插入、更新、刪除時使用
java jdbc中ps.executeUpdate();ps.execute()ps.executeQuery() 有什么區別?方法executeQuery 這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。方法executeUpdate 用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。方法execute: 用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
jdbc連接數據庫時,execute(),executeQuery()和executeUpdate()的用法與區別JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之間的區別
Statement 接口提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate和 execute 。使用哪一個方法由
SQL 語句所產生的內容決定 。
方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT
語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP
TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate
的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate
的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL
(數據定義語言)語句 。創建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行 。你也可以從它的名字里看出,方法
executeUpdate 也被用于執行更新表 SQL 語句 。實際上,相對于創建表來說,executeUpdate
更多時間是用于更新表,因為表只需要創建一次,但經常被更新 。
方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程
或動態執行未知 SQL 字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
因為方法 execute 處理非常規情況,所以獲取其結果需要一些特殊處理并不足為怪 。例如,假定已知某個過程返回兩個結果集,則在使用方法 execute
執行該過程后,必須調用方法 getResultSet 獲得第一個結果集,然后調用適當的 getXXX 方法獲取其中的值 。要獲得第二個結果集,需要先調用
getMoreResults 方法,然后再調用 getResultSet 方法 。如果已知某個過程返回兩個更新計數,則首先調用方法
getUpdateCount,然后調用 getMoreResults,并再次調用 getUpdateCount 。
對于不知道返回內容,則情況更為復雜 。如果結果是 ResultSet 對象,則方法 execute 返回 true;如果結果是 Java int,則返回
false 。如果返回 int,則意味著結果是更新計數或執行的語句是 DDL 命令 。在調用方法 execute 之后要做的第一件事情是調用
getResultSet 或 getUpdateCount 。調用方法 getResultSet 可以獲得兩個或多個 ResultSet
對象中第一個對象;或調用方法 getUpdateCount 可以獲得兩個或多個更新計數中第一個更新計數的內容 。
java execute,executeQuery和executeUpdate之間的區別1、 方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL
語句的方法是 executeQuery 。這個方法被用來執行 SELECT
語句,它幾乎是使用最多的 SQL 語句 。
2、方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL
DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP
TABLE 。INSERT、UPDATE 或 DELETE
語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate
的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE
TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate
的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是
DDL (數據定義語言)語句 。創建表,改變表,刪除表都是 DDL
語句的例子,要用 executeUpdate
方法來執行 。你也可以從它的名字里看出,方法 executeUpdate
也被用于執行更新表 SQL
語句 。實際上,相對于創建表來說,executeUpdate
用于更新表的時間更多,因為表只需要創建一次,但經常被更新 。
3、方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程
或動態執行未知 SQL
字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
Java中executeQuery方法的問題你要用變量作為參數的話,不能用Statement,要用PreparedStatement.
String target = gui.txt.getText();
PreparedStatement pstmt = con.prepareStatement("Select class from table where name =?");
pstmt.SetString(1, target );
然后 resultSet rs = pstmt.executeQuery();
就可以了 。這PreparedStatement是專用來設置參數用的,Statement只能是在sql完全確定的情況下才能用 。
executeQuery(sql)出錯你的驗證sql語句沒有寫上看不到,但是通過描述可以知道,你寫的sql語句有語法錯誤
C# datacontext ExecuteQuery 方法執行出錯斜倚軒窗,聽雨聲瀟瀟,賞枝蔓搖曳,任愛思緒紛飛,憑情在心頭漫延,看雙燕翻飛,想到心痛,望著一地相思,愛到無奈 。飛燕啁啾,枝藤慢舞,心靈的軒窗又慢慢向你開啟,思如細雨,點點滴滴侵入靈魂,任思戀的苦痛把無奈緊緊包裹 。
rs=stmt.executeQuery(sql)出錯是怎么回事你的sql語句別怎么寫,String sql=String.format("select*from goodinfo where gid='%d'",gid);
我這里假設你的商品編號是整形的,所以用的占位符是%d,如果你是String類型,那占位符就用%s,用這樣寫萬無一失,你上面的那種寫法我以前也是這樣寫的,有時候有用,有時候沒有,干脆改成這樣吧 。
JAVA里連接數據庫為什么執行executeQuery查詢的時候語句出錯會不進catch里呢,如圖啊!這是因為親捕捉的異常范圍問題,親可以捕捉異常后直接處理異常信息后直接return的 。
sql語句 execute,executeQuery和executeUpdate之間的區別execute、executeQuery和executeUpdate之間的區別
JDBC中Statement 接口提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和 execute 。使用哪一個方法由 SQL 語句所產生的內容決定 。
1>方法executeQuery
用于產生單個結果集(ResultSet)的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。但也只能執行查詢語句,執行后返回代表查詢結果的ResultSet對象 。
如:
//加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager獲取數據庫連接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root","1234");
//使用Connection來創建一個Statment對象
Statementstmt = conn.createStatement();
//執行查詢語句
ResultSet rs =stmt.executeQuery("select * from teacher");
//把查詢結果輸出來
while (rs.next())
{
System.out.println(rs.getInt(1) + "/t" +rs.getString(2));
}
2>方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數(int),指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。
如:
//加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager獲取數據庫連接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root","1234");
//使用Connection來創建一個Statment對象
Statementstmt = conn.createStatement();
//執行DML語句,返回受影響的記錄條數
return stmt.executeUpdate(sql);
3>方法execute:
可用于執行任何SQL語句,返回一個boolean值,表明執行該SQL語句是否返回了ResultSet 。如果執行后第一個結果是ResultSet,則返回true,否則返回false 。但它執行SQL語句時比較麻煩,通常我們沒有必要使用execute方法來執行SQL語句,而是使用executeQuery或executeUpdate更適合,但如果在不清楚SQL語句的類型時則只能使用execute方法來執行該SQL語句了 。
如://加載驅動
Class.forName(driver);
//獲取數據庫連接
conn = DriverManager.getConnection(url , user , pass);
//使用Connection來創建一個Statment對象
stmt = conn.createStatement();
//執行SQL,返回boolean值表示是否包含ResultSet
boolean hasResultSet = stmt.execute(sql);
//如果執行后有ResultSet結果集
if (hasResultSet)
{
//獲取結果集
rs = stmt.getResultSet();
//ResultSetMetaData是用于分析結果集的元數據接口
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
//迭代輸出ResultSet對象
while (rs.next())
{//依次輸出每列的值
for (int i = 0 ; i < columnCount ; i++ )
{
System.out.print(rs.getString(i + 1) + "/t");
}
System.out.print("/n");
}
}
else
{
System.out.println("該SQL語句影響的記錄有" + stmt.getUpdateCount() + "條");
}
mysql 中execute,executeQuery和executeUpdate之間的區別JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之間的區別
Statement 接口提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate和 execute 。使用哪一個方法由
SQL 語句所產生的內容決定 。
方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT
語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP
TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate
的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate
的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL
(數據定義語言)語句 。創建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行 。你也可以從它的名字里看出,方法
executeUpdate 也被用于執行更新表 SQL 語句 。實際上,相對于創建表來說,executeUpdate
更多時間是用于更新表,因為表只需要創建一次,但經常被更新 。
方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程
或動態執行未知 SQL 字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
因為方法 execute 處理非常規情況,所以獲取其結果需要一些特殊處理并不足為怪 。例如,假定已知某個過程返回兩個結果集,則在使用方法 execute
執行該過程后,必須調用方法 getResultSet 獲得第一個結果集,然后調用適當的 getXXX 方法獲取其中的值 。要獲得第二個結果集,需要先調用
getMoreResults 方法,然后再調用 getResultSet 方法 。如果已知某個過程返回兩個更新計數,則首先調用方法
getUpdateCount,然后調用 getMoreResults,并再次調用 getUpdateCount 。
對于不知道返回內容,則情況更為復雜 。如果結果是 ResultSet 對象,則方法 execute 返回 true;如果結果是 Java int,則返回
false 。如果返回 int,則意味著結果是更新計數或執行的語句是 DDL 命令 。在調用方法 execute 之后要做的第一件事情是調用
getResultSet 或 getUpdateCount 。調用方法 getResultSet 可以獲得兩個或多個 ResultSet
對象中第一個對象;或調用方法 getUpdateCount 可以獲得兩個或多個更新計數中第一個更新計數的內容 。
sql語句 execute,executeQuery和executeUpdate之間的區別用于產生單個結果集(ResultSet)的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。但也只能執行查詢語句,執行后返回代表查詢結果的ResultSet對象 。
如:
//加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager獲取數據庫連接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root","1234");
//使用Connection來創建一個Statment對象
Statementstmt = conn.createStatement();
//執行查詢語句
ResultSet rs =stmt.executeQuery("select * from teacher");
//把查詢結果輸出來
while (rs.next())
{
System.out.println(rs.getInt(1) + "/t" +rs.getString(2));
}
方法二.executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數(int),指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。
如:
//加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager獲取數據庫連接Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root","1234");
//使用Connection來創建一個Statment對象
Statementstmt = conn.createStatement();
//執行DML語句,返回受影響的記錄條數
return stmt.executeUpdate(sql);
mysql 中execute,executeQuery和executeUpdate之間的區別MySQL各種權限(共27個)(以下操作都是以root身份登陸進行grant授權,以p1@localhost身份登陸執行各種命令 。)1.usage連接(登陸)權限,建立一個用戶,就會自動授予其usage權限(默認授予) 。mysql>grantusageon*.*to‘p1′@’localhost’identifiedby‘123′;該權限只能用于數據庫登陸,不能執行任何操作;且usage權限不能被回收,也即REVOKE用戶并不能刪除用戶 。2.select必須有select的權限,才可以使用selecttablemysql>grantselectonpyt.*to‘p1′@’localhost’;mysql>select*fromshop;3.create必須有create的權限,才可以使用createtablemysql>grantcreateonpyt.*to‘p1′@’localhost’;4.createroutine必須具有createroutine的權限,才可以使用{create|alter|drop}{procedure|function}mysql>grantcreateroutineonpyt.*to‘p1′@’localhost’;當授予createroutine時,自動授予EXECUTE,ALTERROUTINE權限給它的創建者:mysql>showgrantsfor‘p1′@’localhost’;+—————————————————————————+Grantsforp1@localhost+————————————————————————–+|GRANTUSAGEON*.*TO‘p1′@’localhost’IDENTIFIEDBYPASSWORD‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′||GRANTSELECT,CREATE,CREATEROUTINEON`pyt`.*TO‘p1′@’localhost’||GRANTEXECUTE,ALTERROUTINEONPROCEDURE`pyt`.`pro_shop1`TO‘p1′@’localhost’|+————————————————————————————-+5.createtemporarytables(注意這里是tables,不是table)必須有createtemporarytables的權限,才可以使用createtemporarytables.mysql>grantcreatetemporarytablesonpyt.*to‘p1′@’localhost’;[mysql@mydev~]$mysql-hlocalhost-up1-ppytmysql>createtemporarytablett1(idint);6.createview必須有createview的權限,才可以使用createviewmysql>grantcreateviewonpyt.*to‘p1′@’localhost’;mysql>createviewv_shopasselectpricefromshop;7.createuser要使用CREATEUSER,必須擁有mysql數據庫的全局CREATEUSER權限,或擁有INSERT權限 。mysql>grantcreateuseron*.*to‘p1′@’localhost’;或:mysql>grantinserton*.*top1@localhost;8.insert必須有insert的權限,才可以使用insertinto…..values….9.alter必須有alter的權限,才可以使用altertablealtertableshopmodifydealerchar(15);10.alterroutine必須具有alterroutine的權限,才可以使用{alter|drop}{procedure|function}mysql>grantalterroutineonpyt.*to‘p1′@’localhost‘;mysql>dropprocedurepro_shop;QueryOK,0rowsaffected(0.00sec)mysql>revokealterroutineonpyt.*from‘p1′@’localhost’;[mysql@mydev~]$mysql-hlocalhost-up1-ppytmysql>dropprocedurepro_shop;ERROR1370(42000):alterroutinecommanddeniedtouser‘p1′@’localhost’forroutine‘pyt.pro_shop’11.update必須有update的權限,才可以使用updatetablemysql>updateshopsetprice=3.5wherearticle=0001anddealer=’A';12.delete必須有delete的權限,才可以使用deletefrom….where….(刪除表中的記錄)13.drop必須有drop的權限,才可以使用dropdatabasedb_name;droptabletab_name;dropviewvi_name;dropindexin_name;14.showdatabase通過showdatabase只能看到你擁有的某些權限的數據庫,除非你擁有全局SHOWDATABASES權限 。對于p1@localhost用戶來說,沒有對mysql數據庫的權限,所以以此身份登陸查詢時,無法看到mysql數據庫:mysql>showdatabases;+——————–+|Database|+——————–+|information_schema||pyt||test|+——————–+15.showview必須擁有showview權限,才能執行showcreateview 。mysql>grantshowviewonpyt.*top1@localhost;mysql>showcreateviewv_shop;16.index必須擁有index權限,才能執行[create|drop]indexmysql>grantindexonpyt.*top1@localhost;mysql>createindexix_shoponshop(article);mysql>dropindexix_shoponshop;17.excute執行存在的Functions,Proceduresmysql>callpro_shop1(0001,@a);+———+|article|+———+|0001||0001|+———+mysql>select@a;+——+|@a|+——+|2|+——+18.locktables必須擁有locktables權限,才可以使用locktablesmysql>grantlocktablesonpyt.*top1@localhost;mysql>locktablesa1read;mysql>unlocktables;19.references有了REFERENCES權限,用戶就可以將其它表的一個字段作為某一個表的外鍵約束 。20.reload必須擁有reload權限,才可以執行flush[tables|logs|privileges]mysql>grantreloadonpyt.*top1@localhost;ERROR1221(HY000):IncorrectusageofDBGRANTandGLOBALPRIVILEGESmysql>grantreloadon*.*to‘p1′@’localhost’;QueryOK,0rowsaffected(0.00sec)mysql>flushtables;21.replicationclient擁有此權限可以查詢masterserver、slaveserver狀態 。mysql>showmasterstatus;ERROR1227(42000):Accessdenied;youneedtheSUPER,REPLICATIONCLIENTprivilegeforthisoperationmysql>grantReplicationclienton*.*top1@localhost;或:mysql>grantsuperon*.*top1@localhost;mysql>showmasterstatus;+——————+———-+————–+——————+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+——————+———-+————–+——————+|mysql-bin.000006|2111|||+——————+———-+————–+——————+mysql>showslavestatus;22.replicationslave擁有此權限可以查看從服務器,從主服務器讀取二進制日志 。mysql>showslavehosts;ERROR1227(42000):Accessdenied;youneedtheREPLICATIONSLAVEprivilegeforthisoperationmysql>showbinlogevents;ERROR1227(42000):Accessdenied;youneedtheREPLICATIONSLAVEprivilegeforthisoperationmysql>grantreplicationslaveon*.*top1@localhost;mysql>showslavehosts;Emptyset(0.00sec)mysql>showbinlogevents;+—————+——-+—————-+———–+————-+————–+|Log_name|Pos|Event_type|Server_id|End_log_pos|Info|+—————+——-+————–+———–+————-+—————+|mysql-bin.000005|4|Format_desc|1|98|Serverver:5.0.77-log,Binlogver:4||mysql-bin.000005|98|Query|1|197|use`mysql`;createtablea1(iint)engine=myisam|……………………………………23.Shutdown關閉MySQL:[mysql@mydev~]$mysqladminshutdown重新連接:[mysql@mydev~]$mysqlERROR2002(HY000):Can’tconnecttolocalMySQLserverthroughsocket‘/tmp/mysql.sock’(2)[mysql@mydev~]$cd/u01/mysql/bin[mysql@mydevbin]$./mysqld_safe&[mysql@mydevbin]$mysql24.grantoption擁有grantoption,就可以將自己擁有的權限授予其他用戶(僅限于自己已經擁有的權限)mysql>grantGrantoptiononpyt.*top1@localhost;mysql>grantselectonpyt.*top2@localhost;25.file擁有file權限才可以執行select..intooutfile和loaddatainfile…操作,但是不要把file,process,super權限授予管理員以外的賬號,這樣存在嚴重的安全隱患 。mysql>grantfileon*.*top1@localhost;mysql>loaddatainfile‘/home/mysql/pet.txt’intotablepet;26.super這個權限允許用戶終止任何查詢;修改全局變量的SET語句;使用CHANGEMASTER,PURGEMASTERLOGS 。mysql>grantsuperon*.*top1@localhost;mysql>purgemasterlogsbefore‘mysql-bin.000006′;27.process通過這個權限,用戶可以執行SHOWPROCESSLIST和KILL命令 。默認情況下,每個用戶都可以執行SHOWPROCESSLIST命令,但是只能查詢本用戶的進程 。mysql>showprocesslist;+—-+——+———–+——+———+——+——-+——————+|Id|User|Host|db|Command|Time|State|Info|+—-+——+———–+——+———+——+——-+——————+|12|p1|localhost|pyt|Query|0|NULL|showprocesslist|+—-+——+———–+——+———+——+——-+——————+另外,管理權限(如super,process,file等)不能夠指定某個數據庫,on后面必須跟*.*mysql>grantsuperonpyt.*top1@localhost;ERROR1221(HY000):IncorrectusageofDBGRANTandGLOBALPRIVILEGESmysql>grantsuperon*.*top1@localhost;QueryOK,0rowsaffected(0.01sec)
java execute,executeQuery和executeUpdate之間的區別方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句
方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句
方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句
execute,executeQuery和executeUpdate之間的區別Statement 接口提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和 execute 。使用哪一個方法由 SQL 語句所產生的內容決定 。
方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (數據定義語言)語句 。創建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行 。你也可以從它的名字里看出,方法 executeUpdate 也被用于執行更新表 SQL 語句 。實際上,相對于創建表來說,executeUpdate 用于更新表的時間更多,因為表只需要創建一次,但經常被更新 。
方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程 或動態執行未知 SQL 字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
因為方法 execute 處理非常規情況,所以獲取其結果需要一些特殊處理并不足為怪 。例如,假定已知某個過程返回兩個結果集,則在使用方法 execute 執行該過程后,必須調用方法 getResultSet 獲得第一個結果集,然后調用適當的 getXXX 方法獲取其中的值 。要獲得第二個結果集,需要先調用 getMoreResults 方法,然后再調用 getResultSet 方法 。如果已知某個過程返回兩個更新計數,則首先調用方法 getUpdateCount,然后調用 getMoreResults,并再次調用 getUpdateCount 。
對于不知道返回內容,則情況更為復雜 。如果結果是 ResultSet 對象,則方法 execute 返回 true;如果結果是 Java int,則返回 false 。如果返回 int,則意味著結果是更新計數或執行的語句是 DDL 命令 。在調用方法 execute 之后要做的第一件事情是調用 getResultSet 或 getUpdateCount 。調用方法 getResultSet 可以獲得兩個或多個 ResultSet 對象中第一個對象;或調用方法 getUpdateCount 可以獲得兩個或多個更新計數中第一個更新計數的內容 。
當 SQL 語句的結果不是結果集時,則方法 getResultSet 將返回 null 。這可能意味著結果是一個更新計數或沒有其它結果 。在這種情況下,判斷 null 真正含義的唯一方法是調用方法 getUpdateCount,它將返回一個整數 。這個整數為調用語句所影響的行數;如果為 -1 則表示結果是結果集或沒有結果 。如果方法 getResultSet 已返回 null(表示結果不是 ResultSet 對象),則返回值 -1 表示沒有其它結果 。也就是說,當下列條件為真時表示沒有結果(或沒有其它結果):
((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
如果已經調用方法 getResultSet 并處理了它返回的 ResultSet 對象,則有必要調用方法 getMoreResults 以確定是否有其它結果集或更新計數 。如果 getMoreResults 返回 true,則需要再次調用 getResultSet 來檢索下一個結果集 。如上所述,如果 getResultSet 返回 null,則需要調用 getUpdateCount 來檢查 null 是表示結果為更新計數還是表示沒有其它結果 。
當 getMoreResults 返回 false 時,它表示該 SQL 語句返回一個更新計數或沒有其它結果 。因此需要調用方法 getUpdateCount 來檢查它是哪一種情況 。在這種情況下,當下列條件為真時表示沒有其它結果:
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
下面的代碼演示了一種方法用來確認已訪問調用方法 execute 所產生的全部結果集和更新計數:
stmt.execute(queryStringWithUnknownResults);
while (true) {
int rowCount = stmt.getUpdateCount();
if (rowCount > 0) { // 它是更新計數
System.out.println("Rows changed = " + count);
stmt.getMoreResults();
continue;
}
if (rowCount == 0) { // DDL 命令或 0 個更新
System.out.println(" No rows changed or statement was DDL
command");
stmt.getMoreResults();
continue;
}
// 執行到這里,證明有一個結果集
// 或沒有其它結果
ResultSet rs = stmt.getResultSet;
if (rs != null) {
. . . // 使用元數據獲得關于結果集列的信息
while (rs.next()) {
. . . // 處理結果
stmt.getMoreResults();
continue;
}
break; // 沒有其它結果
sql中execute,executequery和executeupdate之間的區別在用純JSP做一個頁面報警功能的時候習慣性的用executeQuery來執行SQL語句,結果執行update時就遇到問題,語句能執行,但返回結果
出現問題,另外還忽略了executeUpdate的返回值不是結果集ResultSet,而是數值!特收藏如下一篇文章(感謝網友們對各種信息的貢
獻):
JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之間的區別
Statement 接口提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和 execute 。使用哪一個方法由 SQL 語句所產生的內容決定 。
方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用
于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP
TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate
的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE
等不操作行的語句,executeUpdate 的返回值總為零 。
使用executeUpdate方法是因為在
createTableCoffees 中的 SQL 語句是 DDL (數據定義語言)語句 。創建表,改變表,刪除表都是 DDL 語句的例子,要用
executeUpdate 方法來執行 。你也可以從它的名字里看出,方法 executeUpdate 也被用于執行更新表 SQL
語句 。實際上,相對于創建表來說,executeUpdate 用于更新表的時間更多,因為表只需要創建一次,但經常被更新 。
方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程或動態執行未知 SQL 字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
因
為方法 execute 處理非常規情況,所以獲取其結果需要一些特殊處理并不足為怪 。例如,假定已知某個過程返回兩個結果集,則在使用方法
execute 執行該過程后,必須調用方法 getResultSet 獲得第一個結果集,然后調用適當的 getXXX
方法獲取其中的值 。要獲得第二個結果集,需要先調用 getMoreResults 方法,然后再調用 getResultSet
方法 。如果已知某個過程返回兩個更新計數,則首先調用方法 getUpdateCount,然后調用 getMoreResults,并再次調用
getUpdateCount 。
對于不知道返回內容,則情況更為復雜 。如果結果是 ResultSet 對象,則方法 execute 返回
true;如果結果是 Java int,則返回 false 。如果返回 int,則意味著結果是更新計數或執行的語句是 DDL 命令 。在調用方法
execute 之后要做的第一件事情是調用 getResultSet 或 getUpdateCount 。調用方法 getResultSet
可以獲得兩個或多個 ResultSet 對象中第一個對象;或調用方法 getUpdateCount
可以獲得兩個或多個更新計數中第一個更新計數的內容 。
當 SQL 語句的結果不是結果集時,則方法 getResultSet 將返回
null 。這可能意味著結果是一個更新計數或沒有其它結果 。在這種情況下,判斷 null 真正含義的唯一方法是調用方法
getUpdateCount,它將返回一個整數 。這個整數為調用語句所影響的行數;如果為 -1 則表示結果是結果集或沒有結果 。如果方法
getResultSet 已返回 null(表示結果不是 ResultSet 對象),則返回值 -1
表示沒有其它結果 。也就是說,當下列條件為真時表示沒有結果(或沒有其它結果):
((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
如
果已經調用方法 getResultSet 并處理了它返回的 ResultSet 對象,則有必要調用方法 getMoreResults
以確定是否有其它結果集或更新計數 。如果 getMoreResults 返回 true,則需要再次調用 getResultSet
來檢索下一個結果集 。如上所述,如果 getResultSet 返回 null,則需要調用 getUpdateCount 來檢查 null
是表示結果為更新計數還是表示沒有其它結果 。
當 getMoreResults 返回 false 時,它表示該 SQL 語句返回一個更新計數或沒有其它結果 。因此需要調用方法 getUpdateCount 來檢查它是哪一種情況 。在這種情況下,當下列條件為真時表示沒有其它結果:
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
下面的代碼演示了一種方法用來確認已訪問調用方法 execute 所產生的全部結果集和更新計數:
stmt.execute(queryStringWithUnknownRe
sults);
while (true) {
int rowCount = stmt.getUpdateCount();
if (rowCount > 0) { // 它是更新計數
System.out.println("Rows changed = " + count);
stmt.getMoreResults();
continue;
}
if (rowCount == 0) { // DDL 命令或 0 個更新
System.out.println(" No rows changed or statement was DDL
command");
stmt.getMoreResults();
continue;
}
// 執行到這里,證明有一個結果集
// 或沒有其它結果
ResultSet rs = stmt.getResultSet;
if (rs != null) {
. . . // 使用元數據獲得關于結果集列的信息
while (rs.next()) {
. . . // 處理結果
stmt.getMoreResults();
continue;
}
Hibernate中execute,executeQuery和executeUpdate之間的區別Hibernate中execute、executeQuery和executeUpdate之間的區別
Statement 接口提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和 execute 。使用哪一個方法由 SQL 語句所產生的內容決定 。
方法executeQuery
用于產生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (數據定義語言)語句 。創建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行 。你也可以從它的名字里看出,方法 executeUpdate 也被用于執行更新表 SQL 語句 。實際上,相對于創建表來說,executeUpdate 用于更新表的時間更多,因為表只需要創建一次,但經常被更新 。
方法execute:
用于執行返回多個結果集、多個更新計數或二者組合的語句 。因為多數程序員不會需要該高級功能
execute方法應該僅在語句能返回多個ResultSet對象、多個更新計數或ResultSet對象與更新計數的組合時使用 。當執行某個已存儲過程或動態執行未知 SQL 字符串(即應用程序程序員在編譯時未知)時,有可能出現多個結果的情況,盡管這種情況很少見 。
因為方法 execute 處理非常規情況,所以獲取其結果需要一些特殊處理并不足為怪 。例如,假定已知某個過程返回兩個結果集,則在使用方法 execute 執行該過程后,必須調用方法 getResultSet 獲得第一個結果集,然后調用適當的 getXXX 方法獲取其中的值 。要獲得第二個結果集,需要先調用 getMoreResults 方法,然后再調用 getResultSet 方法 。如果已知某個過程返回兩個更新計數,則首先調用方法 getUpdateCount,然后調用 getMoreResults,并再次調用 getUpdateCount 。
對于不知道返回內容,則情況更為復雜 。如果結果是 ResultSet 對象,則方法 execute 返回 true;如果結果是 Java int,則返回 false 。如果返回 int,則意味著結果是更新計數或執行的語句是 DDL 命令 。在調用方法 execute 之后要做的第一件事情是調用 getResultSet 或 getUpdateCount 。調用方法 getResultSet 可以獲得兩個或多個 ResultSet 對象中第一個對象;或調用方法 getUpdateCount 可以獲得兩個或多個更新計數中第一個更新計數的內容 。
當 SQL 語句的結果不是結果集時,則方法 getResultSet 將返回 null 。這可能意味著結果是一個更新計數或沒有其它結果 。在這種情況下,判斷 null 真正含義的唯一方法是調用方法 getUpdateCount,它將返回一個整數 。這個整數為調用語句所影響的行數;如果為 -1 則表示結果是結果集或沒有結果 。如果方法 getResultSet 已返回 null(表示結果不是 ResultSet 對象),則返回值 -1 表示沒有其它結果 。也就是說,當下列條件為真時表示沒有結果(或沒有其它結果):
((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
如果已經調用方法 getResultSet 并處理了它返回的 ResultSet 對象,則有必要調用方法 getMoreResults 以確定是否有其它結果集或更新計數 。如果 getMoreResults 返回 true,則需要再次調用 getResultSet 來檢索下一個結果集 。如上所述,如果 getResultSet 返回 null,則需要調用 getUpdateCount 來檢查 null 是表示結果為更新計數還是表示沒有其它結果 。
當 getMoreResults 返回 false 時,它表示該 SQL 語句返回一個更新計數或沒有其它結果 。因此需要調用方法 getUpdateCount 來檢查它是哪一種情況 。在這種情況下,當下列條件為真時表示沒有其它結果:
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
executeQuery()和executeUpdate的關系是什么呀?首先說下 您發帖發錯地方了 這應該發在java區域
方法executeQuery
用于發生單個結果集的語句,例如 SELECT 語句 。被使用最多的執行 SQL 語句的方法是 executeQuery 。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用于執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的后果是改動表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數,唆使受影響的行數(即更新計數) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (數據定義語言)語句 。創立表,轉變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行 。ni也可以從它的名字里看出,方法 executeUpdate 也被用于執行更新表 SQL 語句 。實際上,相對于創立表來說,executeUpdate 用于更新表的時光更多,因為表只需要創立一次,但經常被更新 。
。。。。。。。。。。。。。。
C#中Main函數中的參數有什么作用,在函數中加入參數又起到什么作用呢Main方法是程序的入口點,您將在那里創建對象和調用其他方法,程序控制在該方法中開始和結束 。一個 C# 程序中只能有一個入口點 。該方法在類或結構的內部聲明 。它必須為靜態方法,而不應為公共方法 。(它接受默認訪問級別 private 。)它可以具有 void 或 int 返回類型 。聲明 Main 方法時既可以使用參數,也可以不使用參數,使用參數的話只能是string數組,Main方法一共有以下四種形式1.沒有參數 返回值為voidstatic void Main()2.沒有參數返回值為intstatic int Main()3.帶有參數返回值為voidstatic void Main(string[] args)4.帶有參數返回值為intstatic int Main(string[] args)這4種Main方法都沒有包含訪問修飾符(如public) 。即使包含訪問修飾符,也會在運行時忽略它們 。C#的慣例是在Main方法中忽略訪問修飾符 。string數組參數的使用(例子) :步驟1:建立一個控制臺應用程序,暫且命名為Main.cs步驟2:貼上下面這段代碼 。using System;class Program{static void Main(string[] args){int argsLength = args.Length;Console.WriteLine("Main函數參數args的長度:" + argsLength.ToString());for (int i = 0; i < argsLength; i++){Console.Write("第" + i.ToString() + "位是:");Console.WriteLine(args[i].ToString());}}}步驟3:編譯并運行Main.cs,生成Main.exe文件步驟4:在命令行模式下輸入c:\>Main a b c ,敲回車看結果輸出結果為:Main函數參數args的長度:3第0位是:a第1位是:b第2位是:c由于參數個數是未知的,所以允許輸入任意多個,也可以不輸入或者在運行之前將我們的參數設定,以便傳入 。在"解決方案"窗口中,右鍵你的項目名,選擇 "屬性",在彈出的新窗口中選擇 "調試" ->"啟動選項"->"命令行參數" 中,輸入你要傳入的string參數值 。(多個參數之間用空格隔開)如果不需要使用 Main 的返回值,則返回 void 可以使代碼變得略微簡單 。但是,返回整數可使程序將狀態信息與調用該可執行文件的其他程序或腳本相關 。下面的示例演示使用Main 的返回值 。class MainReturnValTest{static int Main(){//...return 0;}}由于此示例使用了批處理文件,因此最好從命令行編譯這段代碼,然后,使用批處理文件調用前面的代碼示例所生成的可執行文件 。由于代碼返回零,因此批處理文件將報告成功 。但如果前面的代碼更改為返回非零值,然后重新編譯,則批處理文件的后續執行將指示失敗 。rem test.bat@echo offMainReturnValueTest@if "%ERRORLEVEL%" == "0" goto good:failecho Execution Failedecho return value = https://www.zaoxu.com/jjsh/bkdq/%ERRORLEVEL%goto end:goodecho Execution Succededecho return value = %ERRORLEVEL%goto end:end示例輸出Execution Succeded return value = 0 在此示例中,使用了一個批處理文件來執行程序并測試 Main 函數的返回值 。在 Windows 中執行程序時,Main 函數返回的任何值都將存儲在名為 ERRORLEVEL 的環境變量中 。通過檢查 ERRORLEVEL 變量,批處理文件可以確定執行的結果 。通常,返回值為零指示執行成功 。
executeQuery方法返回什么類型的數據?返回受影響的行數
c#中 引用參數與輸出參數的功能分別是?有什么區別?分別在什么時候使用?其實不用想的太復雜,簡單點想
引用參數,ref,比如 public int Fun(ref int k);這樣的函數,你想在函數體內修改參數k的值,就這樣用,值類型的話就這樣用吧,如果參數是一個對象,就不用這個ref了,其實意思就是傳地址進去,讓你進行操作
而輸出參數,out,就是可以傳入沒有初始化的參數 。ref就是必須初始化的
out可以在內部進行初始化,而且一定要初始化,這個要注意
就比如你傳入一個沒有初始化的值類型的數據,就可以用out這樣的方法
兩個的區別就是,ref要初始化,另一個不用
不過兩個都可以在內部修改他的值
具體什么時候用,ref主要還是對于值類型
out可以處理一個沒有初始化的數組,這個比較有用
你再看看別人說的,總結下吧
如何將SQL查詢結果存放到數組里面假設mysql中test數據庫中有個表式score,有數據,我只取第一列的數據出來:
public void mysqlConnection(){
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();//數據庫驅動
String url = "jdbc:mysql://localhost:3306/test";//數據庫鏈接地址
String user = "root";//用戶名
String password = "";//密碼
Connection conn = DriverManager.getConnection(url, user, password);//建立connection
Statement stmt = conn.createStatement();
conn.setAutoCommit(false);// 更改jdbc事務的默認提交方式
String sql = "select * from score";//查詢語句
ResultSet rs = stmt.executeQuery(sql);//得到結果集
conn.commit();//事務提交
conn.setAutoCommit(true);// 更改jdbc事務的默認提交方式
List list=new ArrayList();//創建取結果的列表,之所以使用列表,不用數組,因為現在還不知道結果有多少,不能確定數組長度,所有先用list接收,然后轉為數組
while (rs.next()) {//如果有數據,取第一列添加如list
list.add(rs.getString(1));
}
if(list != null && list.size()>0){//如果list中存入了數據,轉化為數組
String[] arr=new String[list.size()];//創建一個和list長度一樣的數組
for(int i=0;i<list.size();i++){
arr[i]=list.get(i);//數組賦值了 。
}
//輸出數組
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
請問 executeQuery參數sql 就是sql語句,語句中可以帶?號.
像select * from table1 where field_1 = ? and field_2=?
參數args是代替所有?號的值,可以看成是Object數組 。
循環Object數組,往帶?的sql加入參數值.如
pstmt.setObject(1, args[0]);
pstmt.setObject(2, args[1]);
pstmt.setObject(3, args[2]);
.......
望采納
java怎么處理postgresql的存儲函數返回的數組?postgreSQL的JDBC驅動是支持數組返回的,數組對應的類型為org.postgresql.jdbc4.Jdbc4Array(我用的是jdbc4).一個示例, 函數如下:create or replace function fn_rtbAry()returns integer[]as $fn_rtbAry$beginreturn '{10, 20, 30}'::integer[];end;$fn_rtbAry$ language plpgsql;Java中獲得返回的數組, 要引入java.lang.*,java.sql.*,java.util.*,org.postgresql.jdbc4.*:Connectionconn = null;Statementcmd = null;ResultSetrs = null;Jdbc4Arrayobj = null;Integer[]dataAry = null;// ... 連接,查詢創建以及初始化代碼省略rs = cmd.executeQuery("select fn_rtbAry() as v");// 循環獲得數據while (rs.next()) {obj = (Jdbc4Array)rs.getObject(1);dataAry = (Integer[])obj.getArray(); // 這里獲得函數返回的數組,并轉換成Integer數組// 其他代碼省略}// 釋放對象代碼省略
怎樣用SimpleQuery返回一個字符串數組【executequery】你這個查詢返回的是一個Object型的數組,不可以直接轉化成String數組,你需要遍歷Object為String添加元素然后返回
java 將返回list型 改為 返回數組型兩種方案:
第一種:(推薦使用這種)
只要修改返回類型,并把
return tmplist改成return tmplist.totoArray();就行了 取出的是Object數組,需要強制轉換成HashMap;
//返回值是數組
public Object[] quyListBySqlAndParams(String querystr, List params,int dno) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
ResultSetMetaData rsmd = null;
List tmplist=new ArrayList();
try{
conn = myDataUtil.getConnection(dno);
pstmt = conn.prepareStatement(querystr);
//參數賦值
for(int i=0;i<params.size();i++){
String param = params.get(i)==null?"":params.get(i).toString().trim();
pstmt.setString(i+1,param);
}
rst = pstmt.executeQuery();
rsmd = rst.getMetaData();
while (rst.next()) {
Map tmpmap = new HashMap();
for ( int i = 1; i <= rsmd.getColumnCount(); i++ ){
tmpmap.put(rsmd.getColumnName(i), rst.getObject(i));
}
tmplist.add(tmpmap);
}
}catch(Exception e){
System.out.println("pubgetstr"+e.toString()+querystr);
}finally{
myDataUtil.free(rst,pstmt,conn);
//這里調用toArray()方法返回數組
return tmplist.toArray();
}
}
。
方案二:
原理就是將結果集的游標定位到最后一行,然后通過返回行號確定記錄數,從而確定數組的長度 。然后再將游標回退到beforefirst
但是一定要注意 這么做有個地方要考慮,默認的ResultSet類型是TYPE_FORWARD_ONLY,只向前的游標,不允許指針回退;在定義時要將默認的ResultSet類型里的TYPE_FORWARD_ONLY改成ResultSet.TYPE_SCROLL_INSENSITIVE,把你那句改成這個
pstmt = conn.prepareStatement(querystr, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//返回數組
public Object[] quyListBySqlAndParams(String querystr, List params,int dno) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
ResultSetMetaData rsmd = null;
Object[] tmpAarry;
try{
conn = myDataUtil.getConnection(dno);
//注意 這里做了修改pstmt=conn.prepareStatement(querystr,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//參數賦值
for(int i=0;i<params.size();i++){
String param = params.get(i)==null?"":params.get(i).toString().trim();
pstmt.setString(i+1,param);
}
rst = pstmt.executeQuery();
rsmd = rst.getMetaData();
// 這里做了修改
rst.last();
int count = rst.getRow();
tmpAarry = new Object[count];
rst.beforeFirst();
while (rst.next()) {
Map tmpmap = new HashMap();
int j = 0;
for ( int i = 1; i <= rsmd.getColumnCount(); i++ ){
tmpmap.put(rsmd.getColumnName(i), rst.getObject(i));
}
tmpAarry[j]=tmpmap;
j++;
}
}catch(Exception e){
System.out.println("pubgetstr"+e.toString()+querystr);
}finally{
myDataUtil.free(rst,pstmt,conn);
// 返回的是個數組
return tmpAarry;
}
}
好了,這兩種方法的結構是一樣的,看是你也看到了,自己寫有多麻煩,還要考慮很多意想不到的問題,比如那個滾動結果集 。所以能用java api中提供的最好用,那都是經得住考驗的,而且方便的很 。
- 小米6屏幕多大是幾寸的
- 96 24 64
- 臭鼬是什么
- 有效濾過壓是什么意思
- 為什么不建議做室內設計 室內設計專業真的是個坑嗎??
- 照曰深紅暖見魚是什么生肖
- 欖菜是什么 欖菜是什么圖片
- 染發和焗發的區別是什么?
- 不撞南墻不回頭南墻是啥意思 不撞南墻不回頭的南墻是什么意思
- 電視劇牛努力受傷是第幾集
