我尝试使用java swing在mySQL数据库中插入一些数据!但我得到了错误
java.sql.SQLException:参数索引超出范围(2>参数个数,即1)。
这是显示错误的java代码:
public void saveData(String data) {
try {
conn = MySQL_Connect.ConnectDb();
String sql = "insert into parameterdata(stn_number ,time_received ,temperature_value "
+ ",ph_value ,moisture_value) values(?,?,?,?,?)";
statement = conn.prepareStatement(sql);
statement.setInt(1, readStationNumber());
statement.setString(2, data.substring(49, 50));
statement.setString(3, data.substring(49, 50));
statement.setString(4, data.substring(49, 50));
statement.setString(5, data.substring(49, 50));
statement.execute();
System.out.println("Successfully saved!");
Thread.sleep(1000);
} catch (SQLException | InterruptedException e) {
System.out.println("saveData() error: " + e);
}
}
任何人都可以说明可能导致错误的原因吗?
答案 0 :(得分:2)
使用
try (PreparedStatement statement = conn.prepareStatement(sql)) {
...
statement.executeUpdate();
...
}
也就是说,语句必须在某个时候关闭,最好不要保留重用全局变量。专用的final
PreparedStatement就可以了。
也许并行执行代码改变你脚下的陈述;重新分配到statement
。