java - ORA-00928: Oracle 中缺少 SELECT 关键字

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

我在这段代码中看不到任何错误。如果有人找到,请告诉我错误是什么以及如何解决?

最佳答案

单引号仅适用于字符串文字而不适用于标识符,因此您应该在列名周围将其删除。

INSERT INTO offer1 (RCODE,OFFERNO,DAT) VALUES (?,?,?)

并使用 executeUpdate,因为您没有检索产生结果集的记录。

来自 DOCS

boolean 执行()

  • 执行这个PreparedStatement对象中的SQL语句,可以是任何类型的SQL语句。

结果集执行查询()

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

int 执行更新()

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

关于java - ORA-00928: Oracle 中缺少 SELECT 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14722483/

相关文章:

java - Guice:为什么 TypeLiteral<T> getRawType() 方法返回 Class<? super T> 而不是 Class<T>?

sql - 如何在 SQL 中找到多行匹配项?

mysql - MERGE 语句的语法错误

string - Oracle PL/SQL 中有分割字符串的函数吗?

oracle - 创建一个包含 2 列的集合并一次插入所有行 PL/SQL

java - Java 6.0 编译时出现内存不足错误

java - 如何安装 JAVA 8 Debian 8

java - 二进制序列化协议(protocol)

条件基于列值的 WHERE 子句中的 SQL If-Else

Java 持久性 - getSingleResult() 未检索任何实体