当前位置: 首页 > 面试题库 >

java.sql.SQLException:ORA-00928:缺少SELECT关键字。使用JDBC将记录插入数据库时

皮骏
2023-03-14
问题内容

当我尝试向数据库中插入一些行时出现错误。所以这是代码

try {
    String insertStmt = "INSERT into " +
                        "MY_TABLE('RECORD_TYPE', 'FILE_TYPE', 'DATE', 'BATCH_NO', 'RECORD_COUNT')" +
                        "VALUES(?, ?, ?, ?, ?);";

    PreparedStatement pstmt = super.con.prepareStatement(insertStmt);

    pstmt.setString(1, input[0]);
    pstmt.setString(2, input[1]);
    pstmt.setString(3, input[2]);
    pstmt.setString(4, input[3]);
    pstmt.setString(5, input[4]);

    System.out.println("Insert rows : " + pstmt.executeUpdate());

} catch (SQLException sqle) {
    System.out.println(sqle.getMessage());
    sqle.printStackTrace();
} catch (Exception e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
} finally {
    con.close();
}

并且数据库上的所有内容均为varchar类型,请仔细检查各列(它们都是相同的名称),将列名中的引号引起来(相同的结果)不会成功。要添加它,错误消息不是很有帮助。

任何建议,将不胜感激。


问题答案:

我可以发现两个问题:

  1. 不需要在列名周围使用单引号。但是您可以将其用双引号引起来。如果对列名或表名使用保留关键字,则很有必要。在这里DATE
  2. 您需要一个空格VALUES

因此,您需要更改insertStmt为以下内容:

String insertStmt = "INSERT into " +
    "MY_TABLE(RECORD_TYPE, FILE_TYPE, \"DATE\", BATCH_NO, RECORD_COUNT) " +
    "VALUES(?, ?, ?, ?, ?);";


 类似资料:
  • 问题内容: 我想在Codeigniter的活动记录中使用mySQL函数NOW()在数据库中插入当前时间。以下查询将不起作用: 这是因为CodeIgniter的ActiveRecord类自动转义输入。 通过调用set()并传递peratmeter FALSE,以下代码可以正常工作,以使它不会逃脱NOW()。 但是,我的问题是,除此之外还有其他方法吗?例如,如果我可以通过只添加数据数组中的所有内容来以

  • 我使用的是vertx jdbc客户端(http://vertx.io/docs/vertx-jdbc-client/java/)我的数据库连接。这适用于除BigDecimal之外的所有数据类型。 在我的数据库中,类型是decimal(13,2),在Java中,我使用的是BigDecimal数据类型。我只是想读书 不幸的是,我得到了以下例外: 查看io.vertx.core.json.Json.ch

  • 问题内容: 我在使用方法时遇到问题。现在,当我摆脱其他问题时,通过应用程序工作时不会出现异常,但对象未放入数据库中。 我的实体类: 我的道课: 我的xml上下文: 和: 有人知道我想念什么吗? 问题答案: 您是否有特定的例外情况?知道这是什么会有所帮助。 这些建议您应该尝试在后面添加并更改注释 您还应该检查是否通过以下行启用了事务注释: 在您的.xml配置中

  • 问题内容: 下面我正在创建表。 当我尝试更新数据库表时,这是下面的UPSERT_SQL查询,我总是在 获取java.sql.SQLException:ORA-00936:缺少表达式 。我检查了我的SQL,找不到找不到表达式的地方。下面的SQL有问题吗? 从下面开始,我执行该UPSERT_SQL语句。 问题答案: 是的,SQL有点问题,这是您在 FROM dual 之前写了一个逗号。这导致Oracl

  • 我正在做一个项目,将读取Excel电子表格行的每个单元格的内容,并将所有这些信息存储在字符串ArrayList中,然后将所有这些行作为记录插入MySQL数据库。 我有一个方法可以很好地提取这些数据,并返回字符串ArrayList的完整ArrayList。我遇到的问题是试图将这些字符串数组列表作为记录插入SQL数据库。我在运行时得到一个索引越界异常。 谁能解释一下我哪里出了问题吗?我认为在我对Arr

  • 问题内容: 我有一个机器人脚本,该脚本可以从sql文件中插入一些sql语句;其中一些语句包含utf8字符。如果我使用navicat工具将此文件手动插入数据库,一切都很好。但是,当我尝试使用机器人框架的数据库库执行此文件时,utf8字符会发疯! 这是我的utf8包含的sql语句: 这是我使用数据库库的方式: 这是我在数据库中得到的: 我尝试直接使用执行SQL文件,但仍然失败!原始库中似乎有问题。这是