有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在数据库中插入一行?

我写这段代码是为了向数据库添加内容,但是,当我尝试运行它时,它不起作用,我一直在寻找方法,但我似乎找不到解决方案,有人能帮我吗

String mySQL ="INSERT INTO Measurement (Level, Time, Date, TankID)"+"VALUES (textField1, currentTime,currentDate,(SELECT TankID FROM Tanks WHERE TankName = '2' AND Site_ID = '1'))";

stmt.executeUpdate(mySQL);

共 (3) 个答案

  1. # 1 楼答案

    您应该使用PreparedStatement正确设置插入查询的第一个参数,并检查数据库服务器的文档,以使用现有函数获取当前时间和日期

    例如,mySQL有函数^{}^{}

    String query = "INSERT INTO Measurement (Level, Time, Date, TankID) "
        + "VALUES (?, CURTIME(), CURDATE(), (SELECT TankID FROM Tanks WHERE TankName = '2' AND Site_ID = '1'))";
    
    try (PreparedStatement statement = connection.prepareStatement(query)) {
        statement.setString(1, textField1); // could be textField1.getText() or textField1.getValue()
        statement.executeUpdate();
    }
    
  2. # 2 楼答案

    SQL和prepared语句的格式都不正确。在这里尝试使用INSERT INTO ... SELECT

    String sql = "INSERT INTO Measurement (Level, Time, Date, TankID) ";
    sql += "SELECT ?, ?, ?, TankID ";
    sql += "FROM Tanks ";
    sql += "WHERE TankName = '2' AND Site_ID = '1'";
    
    stmt.setString(1, textField1);
    stmt.setString(2, currentTime);  // not sure about the type here
    stmt.setString(3, currentDate);  // also not sure about the type
    
    stmt.executeUpdate();
    

    注意,我不确定currentTimecurrentDate列的Java和SQL绑定类型。如果不是字符串,则上面的内容必须稍微更改