簡體   English   中英

Java中的SQLITE刪除方法

[英]SQLITE delete method in Java

我有一種方法應該從我的數據庫中刪除一個Person(一行)。 我收到了我在捕獲中創建的錯誤消息。 我剛開始使用數據庫,並且我大多數時候一直在拼湊不同的技術。 我不確定該怎么辦

公共靜態無效deletePerson(String 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.findColumn(JDBC3ResultSet.java:48)在org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:443)在Test.deletePerson(Test.java:181)在Test.main( Test.java:65)

SELECT SSN FIRSTNAME, LASTNAME, AGE, CREDITCARD FROM ...
          ^

這與SSN AS FIRSTNAME相同,即,在查詢的輸出中, SSN列重命名為FIRSTNAME 您顯然忘記了逗號。

無論如何,您都將遇到此錯誤,因為沒有SSN列。 您必須確保使用此列創建該表,或者如果您具有舊數據庫,則必須添加此列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM