SQL 查询的准备语句,错误 DB2 SQL 错误:SQLCODE=-206,SQLSTATE=42703

Posted

技术标签:

【中文标题】SQL 查询的准备语句,错误 DB2 SQL 错误:SQLCODE=-206,SQLSTATE=42703【英文标题】:Prepared statement for SQL query, error DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703 【发布时间】:2018-06-25 11:44:45 【问题描述】:

我目前在使用准备好的语句进行 SQL 查询时遇到问题。

String test= "INSERT INTO TEST" + "(ID, IC, CN, CT, Time)" 
             + "VALUES ('"+ ID +"','"+ IC +"','"+CN +"','"+ CT +"','"+ time +"')";  

preparedStatement = myConn.prepareStatement(test);
preparedStatement.executeUpdate();

我已成功连接到数据库,并创建了表。是因为单引号的问题吗?

【问题讨论】:

不相关:但 PrepareStatement 在查询中连接不符合逻辑 你的问题不完整,添加表中各列的datatypes,这样我们就可以看到哪些值需要引用了。 您需要提供完整的错误信息。 SQLCODE -206 表示您在语句中引用了一个不存在的对象(表或列)。错误消息应包含对象的名称。 【参考方案1】:

您错过了使用PreparedStatement 的意义。你可以只绑定这些值,这样你就不必乱引用自己了:

String test= "INSERT INTO TEST (ID, IC, CN, CT, Time) VALUES (?, ?, ?, ?, ?)";

preparedStatement = myConn.prepareStatement(test);
preparedStatement.setString(id);
preparedStatement.setString(ic);
preparedStatement.setString(cn);
preparedStatement.setString(ct);
preparedStatement.setDate(new Timestamp(time));

preparedStatement.executeUpdate();

【讨论】:

以上是关于SQL 查询的准备语句,错误 DB2 SQL 错误:SQLCODE=-206,SQLSTATE=42703的主要内容,如果未能解决你的问题,请参考以下文章

DB2错误码

PHP IBM SQL DB2 语句仅部分更新,没有错误消息

DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法

使用 Worklight 6.1.0 触发选择查询时出现 DB2 SQL 错误?

db2数据库查询所有用户的sql语句

通过 db2-luw 上的 xmlquery 使用正则表达式执行更新语句时出现 SQL 错误