代表:
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
答案 0 :(得分:3)
正如其他人所指出的那样:executeUpdate()
不能用于运行查询。
如果您正在寻找一种在不知道它们操作的情况下执行语句的方法,那么您应该看一下execute()方法。
http://download.oracle.com/javase/6/docs/api/java/sql/Statement.html#execute%28java.lang.String%29
返回的布尔值会告诉您它是返回结果还是更新计数。然后,您可以使用getResultSet()来获取结果,或使用getUpdateCount()来获取受影响的行数。
请注意,允许语句返回多个结果和/或udpate计数。请参阅getMoreResults()中的示例。
答案 1 :(得分:1)
executeUpdate
适用于修改数据的语句(更新,插入)。这就是为什么你得到一个例外/为什么你想在这里使用executeUpdate
?)
答案 2 :(得分:1)
String str = "Slect * from EMP";
应该是
String str = "Select * from EMP";
。
答案 3 :(得分:1)
以下代码表示执行更新语句在
的情况下给出异常 JdbcOdbcDriver
但不是OracleDriver
的情况
所以select executeUpdate("Select * ...");
中的select语句不会总是必要的
但这取决于我们在DriverManager.registerDriver(Driver ob);
某些驱动程序可能会出现异常,而有些则不会
但问题的答案是你不应该使用executeUpdate(" Sel ..") 对于select语句,即使没有给出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);
}
}