有 Java 编程相关的问题?

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

如何使用Java在MySQL的同一个表中插入来自不同类的值

我在不同的班级有不同的价值观。我需要将它们插入同一个表中。例如,在这里尝试本教程中的示例:http://www.vogella.com/articles/MySQLJava/article.html

如果我有这样的代码(假设DB连接在另一个类中成功完成):

// PreparedStatements can use variables and are more efficient
    preparedStatement = connect.prepareStatement("insert into  FEEDBACK.COMMENTS
                         values (default, ?, ?, ?, ? , ?, ?)");
            // "myuser, webpage, datum, summery, COMMENTS from FEEDBACK.COMMENTS");
            // Parameters start with 1
            preparedStatement.setString(1, "Test");
            preparedStatement.setString(2, "TestEmail");
            preparedStatement.setString(3, "TestWebpage");
            preparedStatement.setDate(4, new java.sql.Date(2009, 12, 11));
            preparedStatement.setString(5, "TestSummary");
            preparedStatement.setString(6, "TestComment");
            preparedStatement.executeUpdate();

假设在一个类中我想插入值1,在第二个类中,我想插入值2,等等。在我的程序结束时,在主函数中,我想执行更新。请注意,我写了:

preparedStatement = connect.prepareStatement("insert into  FEEDBACK.COMMENTS 
                    values (default, ?, ?, ?, ? , ?, ?)");

在主要功能中。我尝试将preparedStatement定义为包含main函数的类中的公共变量,例如,如果我需要在另一个类中插入值2,我会键入:

preparedStatement.setString(2, "TestEmail");

但这会导致主函数中出现错误:没有为参数2指定值。那么,如何在一个表中插入不同类的值


共 (2) 个答案

  1. # 1 楼答案

    由于您在main中使用了“preparedStatement”变量,所以我假定它必须是一个公共静态变量。由于您希望其他类对这个变量执行方法,所以我假设您是在这些类的静态初始值设定项或静态构造函数中执行的。问题是这些类不会被加载(因此它们的静态初始值设定项不会运行),除非您从main引用这些类(对该类调用静态方法或创建新实例)。我认为你没有这样做。这就是为什么这些类的静态初始值设定项都没有运行,而且您没有准备好执行的preparedStatement

  2. # 2 楼答案

    试试这个

    主课

        public Class Main{
        public static void main(String args[]){
             Class1 youClassOne = new Class1();
             Class2 youClasstwo = new Class2();
             Connection conn = getConection();//implement this method.
             PreparedStatement preparedStatement = conn.prepareStatement("insert into  FEEDBACK.COMMENTS values (default, ?, ?, ?, ? , ?, ?)");
             youClassOne.addValues(preparedStatement);
             youClasstwo.addValues(preparedStatement);
             preparedStatement.executeUpdate();
        }
    
        }
    

    在1班

    public class Class1{
    
       public void  addValues(PreparedStatement preparedStatement){
                preparedStatement.setString(1, "Test");
                preparedStatement.setString(2, "TestEmail");
                preparedStatement.setString(3, "TestWebpage");
                preparedStatement.setDate(4, new java.sql.Date(2009, 12, 11));
                preparedStatement.setString(5, "TestSummary");
                preparedStatement.setString(6, "TestComment");
            }
    }
    

    我还没有测试过。希望能奏效。如果你遇到任何问题,请告诉我