ORA-00928在oracle中缺少SELECT关键字

Lin*_*vel 5 java sql oracle jdbc prepared-statement

我正在使用以下代码插入数据.但我收到的错误是"ORA-00928: missing SELECT keyword"

try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@xxx.xxx.x.xxx:xxxx:xxxx", "xxxx", "xxxx");
String query="insert into offer1('RCODE','OFFERNO','DAT') values(?,?,?)"; 
    PreparedStatement ps=conn.prepareStatement(query);
    ps.setString(1,r_code);
    ps.setString(2,offerno);
    ps.setDate(3,sqlDate);
    ResultSet rs=ps.executeQuery();
    out.println("data inserted");
}catch(Exception e)
 {
     out.println(e);
 }
Run Code Online (Sandbox Code Playgroud)

我在这段代码中看不到任何错误.如果有人发现,请说出错误是什么以及如何解决?

Joh*_*Woo 8

单引号用于字符串文字,不仅用于标识符,因此您应该在columnNames周围删除它.

INSERT INTO offer1 (RCODE,OFFERNO,DAT) VALUES (?,?,?)
Run Code Online (Sandbox Code Playgroud)

并使用,executeUpdate因为您没有检索导致结果集的记录.

来自DOCS

boolean execute()

  • 在此PreparedStatement对象中执行SQL语句,该对象可以是任何类型的SQL语句.

ResultSet executeQuery()

  • 在此PreparedStatement对象中执行SQL查询,并返回查询生成的ResultSet对象.

int executeUpdate()

  • 执行此PreparedStatement对象中的SQL语句,该对象必须是SQL INSERT,UPDATE或DELETE语句; 或者不返回任何内容的SQL语句,例如DDL语句.


Ora*_*ush 5

没有单引号,请尝试

String query="insert into offer1(RCODE,OFFERNO,DAT) values(?,?,?)"; 
Run Code Online (Sandbox Code Playgroud)

  • 真正的解决方案当然是让数据库给出正确的错误消息,这只是一种解决方法。 (2认同)