SQL 异常:UcanaccessConnection.prepareStatement 的意外标记
SQL Exception: Unexpected token for UcanaccessConnection.prepareStatement
在这段代码中,我正在检查数据库中具有特定 ID 的记录。如果未找到 ID,将使用新记录更新数据库:
public void save() throws SQLException {
String checkSQL = "Select count(*) as count from people where id=?";
PreparedStatement checkStatement = con.prepareStatement(checkSQL);
String insertSQL = "insert into people (ID, NAME, NI_NUMBER, NI_CAT, MOBILE_NUM, EMAIL, ADDRESS, AREA, POSTCODE) values(?, ?, ?, ?, ?, ?, ?, ?, ?) )";
PreparedStatement insertStatement = con.prepareStatement(insertSQL);
for (Employee person : people) {
int id = person.getId();
String name = person.getName();
String NINumber = person.getnINumber();
NICatagory cat = person.getnICatagory();
String mobileNumber = person.getMobileNum();
String email = person.getEmail();
String address = person.getAddress();
String area = person.getArea();
String postcode = person.getPostCode();
checkStatement.setInt(1, id);
ResultSet checkResult = checkStatement.executeQuery();
checkResult.next();
int count = checkResult.getInt(1);
if (count == 0) {
System.out.println("Inserting person with id " + id);
int col = 1;
insertStatement.setInt(col++, id);
insertStatement.setString(col++, name);
insertStatement.setString(col++, NINumber);
insertStatement.setString(col++, cat.name());
insertStatement.setString(col++, mobileNumber);
insertStatement.setString(col++, email);
insertStatement.setString(col++, address);
insertStatement.setString(col++, area);
insertStatement.setString(col++, postcode);
insertStatement.executeUpdate();
} else {
System.out.println("Updating person with id " + id);
}
}
insertStatement.close();
checkStatement.close();
}
编译时我收到 THIS 错误
有什么办法解决这个问题吗?有人建议我在列名周围使用方括号,但这并没有解决我的问题。我还看到了使用 Statement 而不是 PreparedStatement 的建议,但是我不确定如何实现它,因为它不允许 checkStatement.setInt(1, id);
您在插入语句的末尾有一个额外的 )
:
String insertSQL = "....... ?, ?, ?, ?, ?, ?, ?, ?) )";
^
| here
应该是:
String insertSQL = "....... ?, ?, ?, ?, ?, ?, ?, ?)";
在这段代码中,我正在检查数据库中具有特定 ID 的记录。如果未找到 ID,将使用新记录更新数据库:
public void save() throws SQLException {
String checkSQL = "Select count(*) as count from people where id=?";
PreparedStatement checkStatement = con.prepareStatement(checkSQL);
String insertSQL = "insert into people (ID, NAME, NI_NUMBER, NI_CAT, MOBILE_NUM, EMAIL, ADDRESS, AREA, POSTCODE) values(?, ?, ?, ?, ?, ?, ?, ?, ?) )";
PreparedStatement insertStatement = con.prepareStatement(insertSQL);
for (Employee person : people) {
int id = person.getId();
String name = person.getName();
String NINumber = person.getnINumber();
NICatagory cat = person.getnICatagory();
String mobileNumber = person.getMobileNum();
String email = person.getEmail();
String address = person.getAddress();
String area = person.getArea();
String postcode = person.getPostCode();
checkStatement.setInt(1, id);
ResultSet checkResult = checkStatement.executeQuery();
checkResult.next();
int count = checkResult.getInt(1);
if (count == 0) {
System.out.println("Inserting person with id " + id);
int col = 1;
insertStatement.setInt(col++, id);
insertStatement.setString(col++, name);
insertStatement.setString(col++, NINumber);
insertStatement.setString(col++, cat.name());
insertStatement.setString(col++, mobileNumber);
insertStatement.setString(col++, email);
insertStatement.setString(col++, address);
insertStatement.setString(col++, area);
insertStatement.setString(col++, postcode);
insertStatement.executeUpdate();
} else {
System.out.println("Updating person with id " + id);
}
}
insertStatement.close();
checkStatement.close();
}
编译时我收到 THIS 错误
有什么办法解决这个问题吗?有人建议我在列名周围使用方括号,但这并没有解决我的问题。我还看到了使用 Statement 而不是 PreparedStatement 的建议,但是我不确定如何实现它,因为它不允许 checkStatement.setInt(1, id);
您在插入语句的末尾有一个额外的 )
:
String insertSQL = "....... ?, ?, ?, ?, ?, ?, ?, ?) )";
^
| here
应该是:
String insertSQL = "....... ?, ?, ?, ?, ?, ?, ?, ?)";