使用PreparedStatement进行更新

使用PreparedStatement进行更新

本文介绍了列索引无效,使用PreparedStatement进行更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用PreparedStatement更新表

I am updating table using PreparedStatement

以下代码完美运行

pst = conn.prepareStatement("UPDATE playjdbc SET jlname ='javafx10new' WHERE jfname = 'java10'");
int i = pst.executeUpdate();

但是当我尝试这样时它会抛出异常

but when i tried like this it throwing exception

 pst = conn.prepareStatement("UPDATE playjdbc SET jlname ='javafx10new' WHERE jfname =?");
 pst.setString(2, "java10"); // yeah second column is jfname

 int i = pst.executeUpdate();

stacktrace:

stacktrace :

java.sql.SQLException: Invalid column index
    at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5330)
    at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5318)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:282)
    at com.indus.database.EmployeeDTO.updateData(EmployeeDTO.java:114)


推荐答案

以下2指的是问号在查询中的位置字符串,而不是数据库表中列的位置,而不是查询中使用的列名的顺序:

2 in following refers to the position of the question mark in query string, not to the position of column in database table and not to the order of column names used in query:

 pst.setString(2, "java10"); // yeah second column is jfname

使用1代替。

pst.setString(1, "java10"); // first question mark is jfname

这篇关于列索引无效,使用PreparedStatement进行更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 08:08