有 Java 编程相关的问题?

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

使用自定义方法将java插入到我的表中是不起作用的,但是如果我使用createconnection方法,它就可以正常工作

使用自定义方法插入到我的表中不起作用,但是如果我使用createconnection方法,它就可以正常工作

这是我写的插入到表中的方法,这个方法在不同的文件中,调用方方法也在不同的文件中。 当调用该方法时,它什么也不做,只是停止程序执行,没有错误

void insertIntoPatientTable(@NotNull Connection conn){
   System.out.println("inside the insert");
   final String insertStatement =
           "INSERT INTO Patients(FIRST_NAME, LAST_NAME, AGE, " +
           "PHONE_NUMBER, NEXT_OF_KIN_NAME, NEXT_OF_KIN_PHONE_NUMBER)" +
           "VALUES( ? , ? , ? , ? , ? , ?)" ;
   try{
       System.out.println("inside try block");
       System.out.println(conn.isClosed());
       PreparedStatement preparedStatement = conn.prepareStatement(insertStatement);
       preparedStatement.setString(1, "John");
       preparedStatement.setString(2, "Doe");
       preparedStatement.setInt(4, 24);
       preparedStatement.setString(3, "will");
       preparedStatement.setInt(5, 34);
       preparedStatement.setInt(6, 14);
       preparedStatement.execute();
       System.out.println("executed");
   }catch (SQLException ex){
           ex.printStackTrace();
   }
}

这就是调用它的方法。每次我调用该方法时,它似乎都不起任何作用:

void createConnection() {
    setPASSWORD(" ");
    try{
        setConn(DriverManager.getConnection(getUrlString().concat(getTIMEZONE()), getUSER(), getPASSWORD()));
        Connection dbConnection = getConn();
        CRUD_Statements patientModel = new CRUD_Statements();

        Statement statement = dbConnection.createStatement();
        String userStatement = patientModel.createPatientTable();
        patientModel.insertIntoPatientTable(dbConnection);
        statement.execute(userStatement);

        List<PatientModel> patient = new ArrayList<>();
    }catch(SQLException ex){
       ex.printStackTrace();
    }
}

共 (2) 个答案

  1. # 1 楼答案

    我认为你有两个问题:

    1. 在使用statement.execute(userStatement)创建表之前,可以调用patientModel.insertIntoPatientTable。如果在您尝试插入表之前,该表实际上不存在,insertIntoPatientTable将抛出一个异常,但您正在捕获异常,而不是显示它。尝试用ex.printStacktrace()替换ex.getMessage()

    2. 如果insertIntoPatientTable,它将关闭连接,但在insertIntoPatientTable返回后,您尝试在createConnection中重新使用连接

    所以,确保你记录了所有的异常,在你真正处理完之前不要关闭你的连接

    如果再次运行此操作,您可能还会在创建表时遇到问题,因为表已经存在

    最后,如果表不存在,则需要在尝试访问它之前创建,而不是之后

  2. # 2 楼答案

    已经修好了。问题在于get消息,我一打印stackTrace就发现它抛出了getMessage()没有拾取的错误。显然,这是我在表中的数据类型的问题