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
- 臭鼬是什么
- 有效滤过压是什么意思
- 为什么不建议做室内设计 室内设计专业真的是个坑吗??
- 照曰深红暖见鱼是什么生肖
- 榄菜是什么 榄菜是什么图片
- 染发和焗发的区别是什么?
- 不撞南墙不回头南墙是啥意思 不撞南墙不回头的南墙是什么意思
- 电视剧牛努力受伤是第几集