使用自定义方法将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();
}
}
# 1 楼答案
我认为你有两个问题:
在使用
statement.execute(userStatement)
创建表之前,可以调用patientModel.insertIntoPatientTable
。如果在您尝试插入表之前,该表实际上不存在,insertIntoPatientTable
将抛出一个异常,但您正在捕获异常,而不是显示它。尝试用ex.printStacktrace()
替换ex.getMessage()
如果
insertIntoPatientTable
,它将关闭连接,但在insertIntoPatientTable
返回后,您尝试在createConnection
中重新使用连接所以,确保你记录了所有的异常,在你真正处理完之前不要关闭你的连接
如果再次运行此操作,您可能还会在创建表时遇到问题,因为表已经存在
最后,如果表不存在,则需要在尝试访问它之前创建,而不是之后
# 2 楼答案
已经修好了。问题在于get消息,我一打印stackTrace就发现它抛出了getMessage()没有拾取的错误。显然,这是我在表中的数据类型的问题