【发布时间】:2019-08-06 14:15:10
【问题描述】:
我正在做一个项目,我想插入 2 个不同的表,所以我编写了这 2 个查询(query1,query2),当我只用一个查询运行程序时,我没有得到任何异常,但是在执行时在一起我有一堆异常,我使用了preparedStatement execute()并且没有工作 注意:我不是很有经验,请简单解释一下
private void loadBusesToDB() throws SQLException{
Connection connection = connect();
String query = "INSERT INTO Bus (nomLigne, Marque, Matricule, Capacite)"
+ "VALUES (?, ?, ?, ?)";
String query2 = "INSERT INTO Lignes (nomLigne, Sntv Depart, SNTV Arrive, prix)"
+ "VALUES (?, ?, ?, ?)";
PreparedStatement ps = null;
PreparedStatement ps2 = null;
try {
ps = connection.prepareStatement(query);
ps2 = connection.prepareStatement(query2);
for(Bus bus : Bus.buses){
ps.setString(1, bus.getNomLigne());
ps.setString(2, bus.getMarque());
ps.setString(3, bus.getMatricule());
ps.setInt(4, bus.getCapacite());
ps.addBatch(); // THE INSERT HAPPENS HERE
}
ps.executeBatch();
for(Lignes ligne : Lignes.lignes){
ps2.setString(1, ligne.getNomLigne());
ps2.setString(2, ligne.getDepart());
ps2.setString(3, ligne.getArrive());
ps2.setFloat(4, ligne.getPrix());
ps2.addBatch(); // THE INSERT HAPPENS HERE
}
ps2.executeBatch();
} catch (SQLException ex) {
ex.printStackTrace();
System.out.println("ERROR HERE");
throw ex;
}finally{
ps.close();
ps2.close();
connection.close();
}
}
错误:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.2 用户缺少权限或找不到对象:SNTV 在 net.ucanaccess.jdbc.UcanaccessConnection.prepareStatement(UcanaccessConnection.java:509) 在 sntv.MainMenuController.loadBusesToDB(MainMenuController.java:135) 在 sntv.MainMenuController.initialize(MainMenuController.java:277) 在 javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) 在 javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
【问题讨论】:
-
错误消息似乎是某种数据库管道消息。您可以尝试一些简单的方法,例如在任一表上执行
SELECT *,看看至少是否可以正常工作? -
顺便说一句,我建议使用
try-with资源,这样你就不需要在 finally 块中关闭ps,它看起来像这样try(PreparedStatement ps = connection.prepareStatement(query)){}(如果你在至少 Java 8)。 -
要缩小问题范围,首先尝试插入到一个表中查看。
-
这个
INSERT INTO Lignes (nomLigne, Sntv Depart, SNTV Arrive, prix),Sntv Depart是一个列名,还是您想为该列设置别名?如果这确实是一个带有空格的列名(从错误消息来看是这样),那么您需要引用它,例如参见this question -
删除第一个后,第二个是否有效?