Java中的SQLITE删除方法

Java中的SQLITE删除方法,java,sqlite,jdbc,Java,Sqlite,Jdbc,我有一个方法可以从我的数据库中删除一个角色行。 我收到了在catch中创建的错误消息。我刚开始使用数据库,我主要是拼凑不同的技术。我不知道该怎么办 公共静态void deletePersonString firstNameOfPersonToDelete,String lastNameOfPersonToDelete{ 语句stmt=null try { // Create database connection Connection c = Driver

我有一个方法可以从我的数据库中删除一个角色行。 我收到了在catch中创建的错误消息。我刚开始使用数据库,我主要是拼凑不同的技术。我不知道该怎么办

公共静态void deletePersonString firstNameOfPersonToDelete,String lastNameOfPersonToDelete{ 语句stmt=null

    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列是通过索引或别名访问的,而不是通过原始列名。