下面的代码exlpains的执行UPDATE语句给出例外的
JdbcOdbcDriver
的情况下,但不是在OracleDriver
这样情况下,它并不总是necesarry是select语句将给予例外executeUpdate("Select * ...");
但要看在驱动器上,我们在DriverManager.registerDriver(Driver ob);
注册一些驱动程序可能给异常,而有些则不会
但回答你的问题是你不应该使用的executeUpdate(“SEL ..”) 的SELECT语句,即使不给例外阅读下面的代码并和评论,你会更好地了解
import java.sql.*;
import sun.jdbc.odbc.*;
import oracle.jdbc.driver.*;
public class MyDb
{
public static void main(String args[]) throws Exception
{
//drive is oracle.jdbc.driver.OracleDriver;
OracleDriver od=new OracleDriver();
DriverManager.registerDriver(od);
Connection conn;
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","system");
Statement stm= conn.createStatement();
int val=stm.executeUpdate("select * from mylog");
System.out.println(val);
//output for above code is 10 actually the table had 15 rows
//but when table had 7 rows output was 7 ,when number of rows where 9 output was 9
//but when the number of row in table were more than or equal to 10 the out put was 10
//so actually it is no meaning to use select statement within executeQuery
//even if it doesn't give exception
//driver is sun.jdbc.odbc.JdbcOdbcDriver;
JdbcOdbcDriver od2=new JdbcOdbcDriver();
DriverManager.registerDriver(od2);
Connection conn2=DriverManager.getConnection("jdbc:odbc:swap","system","system");
Statement stm2= conn2.createStatement();
int val2=stm2.executeUpdate("select * from mylog");
//while this code gives exception
//Exception in thread "main" java.sql.SQLException: No row count was produced
// at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
// at MyDb.main(MyDb.java:19)
System.out.println(val2);
}
}
不明确的问题 – 2011-01-21 06:46:28
你得到的例外是什么? – Nishant 2011-01-21 06:49:00
异常是:java.sql.SQLExcetion,executeUpdate()返回多行。 – Kiran 2011-01-21 07:16:14