“已准备好”的语句参数错误;JAVA参数索引超出范围(1>;参数数量,即0)";
我试图在数据库中插入一个变量 这是我的密码:“已准备好”的语句参数错误;JAVA参数索引超出范围(1>;参数数量,即0)";,java,Java,我试图在数据库中插入一个变量 这是我的密码: public static void main(String[] args) throws SQLException { Connection connection =null; DBhelper helper = new DBhelper(); PreparedStatement statement = null; ResultSet resultSet; try{ connection= h
public static void main(String[] args) throws SQLException {
Connection connection =null;
DBhelper helper = new DBhelper();
PreparedStatement statement = null;
ResultSet resultSet;
try{
connection= helper.getConnection();
System.out.println("baglantı olustu");
String sql = "INSERT INTO pandemi(toplamvirus) VALUES ('?') ";
statement = connection.prepareStatement(sql);
statement.setInt(1,2);
statement.executeUpdate(sql);
int result = statement.executeUpdate();
}
catch (SQLException exception){
helper.showErrorMessage(exception);
}
finally {
statement.close();
connection.close();
}
//String sql = "UPDATE pandemi SET toplamvirus='ff' ";
}
错误是:
baglantı olustu
Error: Parameter index out of range (1 > number of parameters, which is 0).
Error code : 0
数据库是:将参数序号和值传递给setInt
您使用的方法不正确。第一个参数是序号(在Javadoc中作为索引错误地记录)。第一个占位符是#1,第二个占位符是#2,依此类推。您只有一个?
占位符。或者您试图传递一个值2以插入数据库?你的问题不清楚
使用裸体?
此外,您还需要删除文件中?
占位符周围的单引号。使用“?”
意味着您希望在数据库中插入一个由问号组成的字符串。有了单引号,SQL语句中就没有占位符了。因此,您的setInt
方法将失败。如果使用裸?
,则问号将被识别为占位符
顺便说一下,我建议养成使用SQL语句终止符(分号)的习惯
String sql = "INSERT INTO pandemi ( toplamvirus ) VALUES ( ? ) ; ";
有关更多信息,请参见使用H2数据库引擎的完整示例应用程序,演示在准备好的语句中使用占位符的INSERT
。将参数序号和值传递给setInt
您使用的方法不正确。第一个参数是序号(在Javadoc中作为索引错误地记录)。第一个占位符是#1,第二个占位符是#2,依此类推。您只有一个?
占位符。或者您试图传递一个值2以插入数据库?你的问题不清楚
使用裸体?
此外,您还需要删除文件中?
占位符周围的单引号。使用“?”
意味着您希望在数据库中插入一个由问号组成的字符串。有了单引号,SQL语句中就没有占位符了。因此,您的setInt
方法将失败。如果使用裸?
,则问号将被识别为占位符
顺便说一下,我建议养成使用SQL语句终止符(分号)的习惯
String sql = "INSERT INTO pandemi ( toplamvirus ) VALUES ( ? ) ; ";
有关更多信息,请参见使用H2数据库引擎的完整示例应用程序,该应用程序演示了在准备好的语句中使用占位符的
INSERT
。非常确定偏移量是基于零的,即正确的调用是statement.setInt(0,2)代码>使用字符串sql=“插入pandemi(toplamvirus)值(?”;没有撇号。它认为你插入了?查拉特按照你的建议做了。但是现在,这里有另一个错误:错误:您的SQL语法有一个错误;请查看与MySQL服务器版本对应的手册,以了解在“?)”附近使用的正确语法排队1@ggb667我想我做到了。。错误消失了!!但变量并没有插入到数据库中。不管怎样,非常感谢SQL,偏移量是基于1的。另外,您正在调用update两次。语句执行更新(sql)//不要这样做,您已经将SQL设置为该语句要在构造函数中处理的SQL。int result=statement.executeUpdate();您应该消除“围绕的字符”,确保偏移量是基于零的,即正确的调用是statement.setInt(0,2)代码>使用字符串sql=“插入pandemi(toplamvirus)值(?”;没有撇号。它认为你插入了?查拉特按照你的建议做了。但是现在,这里有另一个错误:错误:您的SQL语法有一个错误;请查看与MySQL服务器版本对应的手册,以了解在“?)”附近使用的正确语法排队1@ggb667我想我做到了。。错误消失了!!但变量并没有插入到数据库中。不管怎样,非常感谢SQL,偏移量是基于1的。另外,您正在调用update两次。语句执行更新(sql)//不要这样做,您已经将SQL设置为该语句要在构造函数中处理的SQL。int result=statement.executeUpdate();你应该去掉“周围的人物”?我按照你的建议做了。但不是,我得到了这个错误:错误:您的SQL语法有一个错误;请查看与MySQL服务器版本对应的手册,以了解在“?)”附近使用的正确语法排队1@Emre将SQL的文本打印到控制台,并与其他示例进行比较。请参阅。并将该SQL文本从控制台复制到管理员应用程序,然后手动运行以消除问题中的Java,并集中精力理解正确的SQL语法。请尝试以下操作:String SQL=“INSERT INTO pandemi(toplamvirus)VALUES(?)
换句话说,在字符串文本中删除分号。(也许我应该投票反对一个错误的答案;-)@Abra你是说分号不是SQL中的语句终止符吗?我按照你的建议做了。但不是,我得到了这个错误:错误:您的SQL语法有一个错误;请查看与MySQL服务器版本对应的手册,以了解在“?)”附近使用的正确语法排队1@Emre将SQL的文本打印到控制台,并与其他示例进行比较。请参阅。并将该SQL文本从控制台复制到管理员应用程序,然后手动运行以消除问题中的Java,并集中精力理解正确的SQL语法。请尝试以下操作:String SQL=“INSERT INTO pandemi(toplamvirus)VALUES(?)
换句话说,在字符串文本中删除分号。(也许我应该投票反对一个错误的答案;-)@Abra你是说分号不是SQL中的语句终止符?