使用executeUpdate()而不是executeQuery()进行SELECT查询

对于Ex:

class sample { public static void main(String a[]) { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:orcl", "", ""); String str = "Slect * from EMP"; Statement st = con.createStatement(); try { st.executeUpdate("select * from EMP"); //gives us Exception } catch(SQLException ex) { // I want actuval code here.......... //CODE here............ }//catch}//try}//main}//class 

正如其他人所指出的那样: executeUpdate()不能用于运行查询。

如果您正在寻找一种在不知道它们执行操作的情况下执行语句的方法,那么您应该查看execute()方法。
http://download.oracle.com/javase/6/docs/api/java/sql/Statement.html#execute%28java.lang.String%29

返回的布尔值将告诉您它是返回结果还是更新计数。 然后,您可以使用getResultSet()来获取结果,或使用getUpdateCount()来获取受影响的行数。

请注意,允许语句返回多个结果和/或udpate计数。 请参阅getMoreResults()中的示例。

executeUpdate适用于修改数据的语句(更新,插入)。 这就是你为什么要在这里使用executeUpdate的方式获得exception的原因?)

 String str = "Slect * from EMP"; 

应该

String str = "Select * from EMP";

同样。

下面的代码展示了执行更新语句在的情况下给出了exception

JdbcOdbcDriver但不是OracleDriver
因此,并非总是必须使用select语句在executeUpdate("Select * ...");提供exceptionexecuteUpdate("Select * ..."); 但这取决于我们在DriverManager.registerDriver(Driver ob);注册的Drive DriverManager.registerDriver(Driver ob);

一些驱动程序可能会给出exception,而有些则不会

但你问题的答案是你不应该对select语句使用executeUpdate(“Sel ..”),即使不给Exception读取下面的代码并评论你会更好地理解

 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); } }