Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.SQLException:没有为参数1指定值_Java_Mysql_Jdbc - Fatal编程技术网

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

我已经查看了其他stackoverflow线程,以获得此问题的答案。我看到的主要是它是由打字错误引起的,尽管我在这个方法中看不到任何错误。从同一类中的另一个方法调用此方法,当run返回错误时:

java.sql.SQLException:没有为参数1指定值

我的班级代码如下:

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的代码相比,您有什么证据可以证明这将解决问题?我更喜欢自己硬编码的表名和列名,但我不明白为什么将它们作为参数会影响执行或产生异常。