我有一个SQL查询,我将使用PreparedStatement运行,它是
UPDATE tbl_HitsCounter SET count = ? WHERE keyid = (SELECT id FROM tbl_HitsMaster WHERE sitename = '?')
现在当我设置第二个参数时,这是一个字符串值,我得到一个奇怪的SQLException。
preparedStatement.setInt(1, 99);
preparedStatement.setString(2, masterKey);
执行setString()方法时,我得到一个SQLException
The column position '2' is out of range. The number of columns for this ResultSet is '1'.
我不知道这是什么,我甚至没有执行executeUpdate()方法。
答案 0 :(得分:5)
您的SQL中只有一个占位符,但您正在尝试为第二个分配值。你的问题是你引用了第二个占位符,你的SQL看起来应该更像这样:
UPDATE tbl_HitsCounter
SET count = ?
WHERE keyid = (
SELECT id
FROM tbl_HitsMaster
WHERE sitename = ?
)
请注意sitename = ?
中缺少引号。这是一个占位符:?
。这是一个SQL问号字符串文字:'?'
。