Java参数索引超出范围(2>参数个数,即1)。“

时间:2015-05-18 09:04:54

标签: java sql sqlexception

我尝试使用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);
    }
}

任何人都可以说明可能导致错误的原因吗?

1 个答案:

答案 0 :(得分:2)

使用

try (PreparedStatement statement = conn.prepareStatement(sql)) {
    ...
    statement.executeUpdate();
    ...
}

也就是说,语句必须在某个时候关闭,最好不要保留重用全局变量。专用的final PreparedStatement就可以了。

也许并行执行代码改变你脚下的陈述;重新分配到statement