Java中的SQLITE删除方法
我有一个方法可以从我的数据库中删除一个角色行。 我收到了在catch中创建的错误消息。我刚开始使用数据库,我主要是拼凑不同的技术。我不知道该怎么办 公共静态void deletePersonString firstNameOfPersonToDelete,String lastNameOfPersonToDelete{ 语句stmt=nullJava中的SQLITE删除方法,java,sqlite,jdbc,Java,Sqlite,Jdbc,我有一个方法可以从我的数据库中删除一个角色行。 我收到了在catch中创建的错误消息。我刚开始使用数据库,我主要是拼凑不同的技术。我不知道该怎么办 公共静态void deletePersonString firstNameOfPersonToDelete,String lastNameOfPersonToDelete{ 语句stmt=null try { // Create database connection Connection c = Driver
try {
// Create database connection
Connection c = DriverManager.getConnection("jdbc:sqlite:PERSON.db");
// Create Statement object
stmt = c.createStatement();
// Get person we're about to delete
String getPersonQuery = "SELECT SSN FIRSTNAME, LASTNAME, AGE, CREDITCARD FROM PERSON WHERE FIRSTNAME = '"
+ firstNameOfPersonToDelete + "' AND LASTNAME = '" + lastNameOfPersonToDelete + "'";
ResultSet rs = stmt.executeQuery(getPersonQuery);
String ssn = rs.getString("SSN");
String firstName = rs.getString("FIRSTNAME");
String lastName = rs.getString("LASTNAME");
String age = rs.getString("AGE");
String creditCard = rs.getString("CREDITCARD");
String deletePersonStatement = "DELETE FROM PERSON WHERE FIRSTNAME = '" + firstName + "' AND LASTNAME = '"
+ lastName + "'";
stmt.executeUpdate(deletePersonStatement);
System.out.println("The following record was deleted:\n" + ssn + "\n" + firstName + " " + lastName + "\n"
+ age + "\n" + creditCard);
System.out.println("\nThe database contains the following records: ");
ArrayList<Object> myPeople = findAllPeople();
for (Object element : myPeople) {
System.out.println(element.toString());
}
} catch (SQLException e) {
e.printStackTrace(System.err);
System.out.println("Error: The person: \"" + firstNameOfPersonToDelete + " " + lastNameOfPersonToDelete
+ "\" was not found. No records were deleted.");
System.out.println("\nThe database contains the following records: ");
ArrayList<Object> myPeople = findAllPeople();
for (Object element : myPeople) {
System.out.println(element.toString());
}
}
}
java.sql.SQLException:没有这样的列:“SSN”错误:找不到此人:Fitzgerald Grant。未删除任何记录。
位于org.sqlite.jdbc3.JDBC3ResultSet.findColumnJDBC3ResultSet.java:48
位于org.sqlite.jdbc3.JDBC3ResultSet.getStringJDBC3ResultSet.java:443
在Test.deletePersonTest.java:181
java:65
从中选择SSN名字、姓氏、年龄、信用卡。。。
^
这与SSN as FIRSTNAME相同,即在查询的输出中,SSN列被重命名为FIRSTNAME。您显然忘记了逗号
在任何情况下,都会出现此错误,因为没有SSN列。
您必须确保使用此列创建此表,或者如果您有旧数据库,请添加此列。在请求调试帮助时,重要的是要包含实际堆栈跟踪。将e.printStackTraceSystem.err;添加到catch块,然后添加问题以显示其内容。此外,请阅读PreparedStatement,Parameter这不是一个论坛;在回答is后不要将问题更改为其他问题。如果你有不同的问题,请询问新问题。哇。所以我添加了逗号,现在我得到了一个不同的错误:数据库文件被锁定这是一个列SSN,否则会在execu上产生不同的错误相反,它只是被别名为FIRSTNAME,这意味着getStringSSN将导致错误,因为在名为SSN的结果集中,它们的is no列是通过索引或别名访问的,而不是通过原始列名。