【发布时间】:2011-11-25 04:07:58
【问题描述】:
当我尝试将一些行插入数据库时出现错误。所以这里是代码
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 类型,仔细检查了列(它们都是相同的名称),从列名中取出引号(相同的结果)没有成功。把它加起来,错误信息不是很有帮助。
任何建议将不胜感激。
【问题讨论】:
-
尝试不带引号(如果有的话应该是双引号),不带尾随分号,并在
values之前加一个空格。 -
RECORD_COUNT) 和 VALUES(.. 之间没有空格,因此您的插入命令看起来像 'INSERT into MY_TABLE(......)VALUES(????)`
-
我认为你总是需要使用双引号,因为 DATE 通常是一个无效的标识符。 (这就是为什么您不应该将其用作列名的原因。另外,为什么将其存储为字符串?)
-
values之前实际上不需要空格,尽管那样通常看起来更好。 -
去掉查询的右双引号前的分号。
标签: java oracle jdbc ora-00928