java.sql.SQLException:没有为参数1指定值
我已经查看了其他stackoverflow线程,以获得此问题的答案。我看到的主要是它是由打字错误引起的,尽管我在这个方法中看不到任何错误。从同一类中的另一个方法调用此方法,当run返回错误时: java.sql.SQLException:没有为参数1指定值 我的班级代码如下:java.sql.SQLException:没有为参数1指定值,java,mysql,jdbc,Java,Mysql,Jdbc,我已经查看了其他stackoverflow线程,以获得此问题的答案。我看到的主要是它是由打字错误引起的,尽管我在这个方法中看不到任何错误。从同一类中的另一个方法调用此方法,当run返回错误时: java.sql.SQLException:没有为参数1指定值 我的班级代码如下: public void WriteTag(String tagPrefix, String tagName, String tagContent) { try { String query = St
public void WriteTag(String tagPrefix, String tagName, String tagContent)
{
try {
String query = String.format("INSERT INTO %s(%s,%s) VALUES(?,?)",
tagPrefix, TAGNAME_COLUMN, TAGCONTENT_COLUMN);
PreparedStatement sqlStatement = connection.prepareStatement(query);
sqlStatement.setString(1, tagName);
sqlStatement.setString(2, tagContent);
//sqlStatement.executeUpdate();
} catch(Exception e) {HandleException(e);}
}
我不确定这里到底出了什么问题。在代码的其他地方正确定义了常量。有人知道我做错了什么吗?试试这个
String query = "Insert into foo (foo1,foo2) Values (?,?)";
PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, whatever);
pst.setString(2, whatever);
pst.executeUpdate(); // this is actually important in order to get data inserted into database.
因此,从技术上讲,对数据库中的表名进行硬编码。它应该会起作用 代码看起来不错。可能错误在其他地方,或者您没有运行看到的代码。您确定执行的版本与您正在查看的源代码相同吗?我的第一个调用端口是用硬编码的列名替换常量,看看这是否解决了问题。正如其他人所说,从表面上看,这段代码看起来不错。谢谢,对列名进行硬编码消除了这个错误。这段代码不会产生这个异常,因为
executeUpdate()
没有执行,这是这里唯一能产生这个异常的语句。不清楚你在问什么,为什么?与OP的代码相比,您有什么证据可以证明这将解决问题?我更喜欢自己硬编码的表名和列名,但我不明白为什么将它们作为参数会影响执行或产生异常。