簡體   English   中英

Java PreparedStatement nullPointerException

[英]Java PreparedStatement nullPointerException

我有兩個類,在第一個類中,我聲明我與derby數據庫的連接

       static final String DATABASE_URL = "jdbc:derby://localhost:1527/A3";
        Connection conn = null;
       public ConnectionToSql() throws ClassNotFoundException  {
       try {       
        conn = DriverManager.getConnection(
                DATABASE_URL, "root", "1234" );
         } catch (SQLException e) {
         }

在第二堂課中,我使用了prepareStatement

       public String validateUser(String username, String password) {

        try {
              PreparedStatement ps = (PreparedStatement) conn.prepareStatement("SELECT *        FROM       users where username = ? and password = ?");

          ps.setObject(1, username);
          ps.setObject(2, password);

          ResultSet rs = ps.executeQuery();

我得到:Server.SqlRepository.validateUser(SqlRepository.java:28)的線程“ Thread-0”中的異常java.lang.NullPointerException

第28行是帶有預處理語句的行。 很抱歉格式化。

如果要在另一個類中實例化您的連接,如何將對它的引用移到該類中以創建准備好的語句? 另外,如果您正確地將引用移動到第二個類,那么如何確定DriverManager.getConnection()返回有效連接或未引發異常?

顯然, conn未被實例化或正在引用null。

try {       
    conn = DriverManager.getConnection(
            DATABASE_URL, "root", "1234" );
    } catch (SQLException e) {
        // You are doing nothing if the statement in your try block throws an exception.
    }

在上面的代碼中,您正在執行吞咽 Exception ,這意味着,如果發生Exception ,則不會對其進行任何處理。 至少您可以添加e.printStackTrace(); 插入catch塊中,以便您可以在控制台中看到引發Exception

如果getConnection()在當前代碼中引發Exception ,則當您調用conn.prepareStatement()conn將為null因此為NullPointerException 我希望這有幫助。

以供參考;

最可能的原因:DriverManager.getConnection引發異常,然后將其淺化。 在這種情況下,conn將為null。

暫無
暫無

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

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