1、 SQL queries 返回 result sets; SQL updates 返回被更新的数据数目. 有时候我们可能不知道执行的SQL将使查询还是更新或者混合两种混合类型!这时候excute出场了。
Statement提供了下面的方法用来处理返回类型的多样化问题。
boolean execute(String sql);
ResultSet getResultSet();
int getUpdateCount();
boolean getMoreResults();
boolean getMoreResults(int current);
2、Excute()方法可以返回的是多个result组成的results集合,result可以是ResultSet ,整数或者两者混合(result相当于一个数组里面存有ResultSet 和整数)。注意到excute()方法的返回式布尔型,如果执行成功返回的是True,如果是失败是False。
第二个方法getResultSet();测试当前的result,如果是集合,那么返回一个ResultSet,如果是Null那么说明当前的结果集是一个整数 ,可以使用第三个方法getUpdateCount();获得更新的数目。
第三和第四个方法用来移动到下一个result.如果下一个result是ResultSet那么返回true,如果null或者证书那么返回的是false.
第四个方法有三个参数,分别意义如下:
CLOSE_CURRENT_RESULT: 只要返回下一个result,那么关闭当前的result
KEEP_CURRENT_RESULT: 当取下一个result时不关闭当前的result
CLOSE_ALL_RESULTS: 关闭前面所有的result当开始下一个时.当(!getMoreResults() && (getUpdateCount() == -1))时已经移动到了集合的最后一个.
...
Connection myConnection = DriverManager.getConnection(url,
"javauser", "hotjava");
Statement myStatement = myConnection.createStatement();
ResultSet rs;
if (myStatement.execute(sqlStatement))
{
// we have a ResultSet
rs = myStatement.getResultSet();
while (rs.next())
{
// process the rows
}
}
else
{
// we have an update count
System.out.println(myStatement.getUpdateCount());
}
myStatement.close();
myConnection.close();
...
...
处理多种返回类型
...
...
Connection myConnection = DriverManager.getConnection(url,
"javauser", "hotjava");
Statement myStatement = myConnection.createStatement();
boolean resultSetIsAvailable;
boolean moreResultsAvailable;
int i = 0;
int res=0;
resultSetIsAvailable = myStatement.execute(sqlText);
ResultSet rs = null;
for (moreResultsAvailable = true; moreResultsAvailable; )
{
if (resultSetIsAvailable)
{
if ((rs = myStatement.getResultSet()) != null) {
// we have a resultset
ResultSetMetaData rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
// display column headers
for (i = 1; i <= numCols; i++)
{
if (i > 1) System.out.print(", ");
System.out.print(
rsmd.getColumnLabel(i));
}
System.out.println("");
// step through the rows
while (rs.next())
{
// process the columns
for (i = 1; i <= numCols; i++)
{
if (i > 1)
System.out.print(", ");
System.out.print(rs.getString(i));
}
System.out.println("");
}
}
}
else
{
if ((res = curStmt.getUpdateCount()) != -1)
{
// we have an updatecount
System.out.println(res + " row(s) affected.");
}
// else no more results
else
{
moreResultsAvailable = false;
}
}
if (moreResultsAvailable)
{
resultSetIsAvailable =
myStatement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
}
}
if (rs != null) rs.close();
myStatement.close();
...
...
3、另外两个常用的方法:
Statement的Cancel 方法:
void cancel();
...
java.sql.Statement myStatement =
myConnection.createStatement();
ResultSet rs = myStatement.executeQuery("SELECT name, title, salary FROM
employees");
int i = 0;
while (rs.next()) {
// increment the counter
i++;
// print the columns of the row that was retrieved
String empName = rs.getString("name");
String empTitle = rs.getString("title");
long empSalary = rs.getLong("salary");
System.out.println("Employee " + empName + " is " + empTitle + "
and earns $" + empSalary);
// cancel all results if 100 rows of data were already
// retrieved
if (i >= 100) myStatement.cancel();
}
...
...
ResultSet的Close 方法:ResultSet不需要使用了
void close();
分享到:
相关推荐
Access_JDBC30.jar解决 1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。
使用JDBC操作数据库
JDBC 中 PreparedStatement 接口提供的 execute、executeQuery 和 executeUpdate 之间的区别及用法 JDBC 中的 PreparedStatement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。...
使用electron-builder打包时必不可少的文件,请放在类似C:\Users\11596\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.3.2的文件夹中!
1、JDBC编程六大步: 1)注册driver 1.class.forName(driver) 2.new oracle.jdbc.driver.OracleDriver(); 3.java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver jdbc.drivers=System.gerProperties(); 2)获得...
执行sql语句(Execute the SQL) <1>.用Statement来执行sql语句 Statement sm = cn.createStatement(); sm.executeQuery(sql); // 执行数据查询语句(select) sm.executeUpdate(sql); // 执行数据更新语句...
String url ="jdbc:access:/d:/empty.mdb"; Class.forName("com.hxtt.sql.access.AccessDriver"); Connection con = DriverManager.getConnection(url); Statement statement = con.createStatement(); ...
Oracle中EXECUTE IMMEDIATE用法
failed to execute script 解决方案+命令行执行传参exe
could not execute:bad executable format(win32 error 193) 下了一个实现MD5的代码,编译时没有错误,但是执行的时候却提示:could not execute:bad executable format(win32 error 193)
connection对象的execute方法
EXECUTE
State model programming provides a way to execute processing procedures based on machine conditions, but independent of the direct equipment control logic. This is an essential component to modular ...
Execute runner
ExecuteSQL.java
1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。
execute immediate 用法研究 为初学者打造。
delegate_execute.exe
Python 3.85 使用pyinstaller在win10 x64下打包的应用程序,在win10 x64下运行完全正常,但是在win7 x64下则报错。failed to execute script pyi_rth_ pyi_rth_xxx 解决方法
NCo3.0调用RFC,通用接口, 支持泛型和动态类型。 Sap通用接口 一、 接口说明 1. 入参Dictionary, string>,出参泛型 1.1 接口ExecuteString public T ExecuteString(string FunName, Dictionary, string>...