2016-04-02 24 views
1

このメソッドは正常に動作しています。ここで私はブックテーブルから最大bookidをフェッチしていますが、データベースがnullの場合、NULLポインタ例外が発生しています。したがって、この例外を処理する方法。mysqlクエリを使用してnullデータベースを処理する方法

public void insertData() {   
      Transaction tx = null; 
      Session session = getSession(); 
      try { 
       tx = session.beginTransaction(); 
       Book book = new Book(); 
       SQLQuery query = session.createSQLQuery("select MAX(bookid) from books"); 
       List<Book> rows = query.list(); 
       for (Object row : rows) { 
        book.setBookid(Integer.parseInt(row.toString())); 
        Integer id1 = book.getBookid() + 1;     
        selbookid = id1; 
       }   

       book.setBookname("Java");    
       book.setDateofcreation(new Date()); 
       book.setLastmodifieddate(new Date());   

       session.save(book); 
       tx.commit(); 
       session.flush(); 
       session.close(); 
      } catch (RuntimeException e) { 
       e.printStackTrace(); 
      } 
     } 
+0

「データベースがnullの場合」、それはもっと正確にはどういう意味ですか?ヌルが分かっている場合は、スタックトレースまたはデバッガを使用して見つけてください。 –

+0

どこで 'NullPointerException'が発生しますか?メソッド 'getSession'では?それからあなたはそれを確認して処理する必要がありますか?私にとってそれはあなたの問題が何であるかは不明です... –

+0

データベースがnullであることを意味しています....本の表はヌルですか?スタックトレースを更新できますか? –

答えて

1

を試してみてくださいあなたの質問は明確ではないですが、私はあなたの質問に見ることができることは、あなたは、データベースがnullの場合、あなただけはexecptionを取得していると言っています。

私のシステムでこの方法をチェックしたところ、SQLクエリでbookテーブルからbookidの最大値を取得しているのにデータベースがnullの場合、最大値をフェッチする方法クエリの変更。

select IFNULL(MAX(bookid),1) from books 

ブックテーブルが空の場合は、bookid 1を挿入するため、データベースがnullの場合でもデータベースはnullです。

1

クエリで単一の行/列の値が返された場合は、list()の代わりにuniqueResult()を使用します。

テーブルに行がない場合に例外が発生することを願います。 私はあなたのコードを少し変更しました。

この

 public void insertData() 
     {   
     Transaction tx = null; 
     Session session = getSession(); 
     int result =0; 
     try { 
      tx = session.beginTransaction(); 
      Book book = new Book(); 
      SQLQuery query = session.createSQLQuery("select MAX(bookid) from books"); 
      try 
      { 
      result = (int)query.uniqueResult(); 
      } 
      catch(Exception e) 
      {    
      //do whatever you want with exception 
      } 
      book.setBookid(result+1); 
      book.setBookname("Java");    
      book.setDateofcreation(new Date()); 
      book.setLastmodifieddate(new Date());   

      session.save(book); 
      tx.commit(); 
      session.flush(); 
      session.close(); 
     } 
     catch (RuntimeException e) { 
      e.printStackTrace(); 
     } 
     } 
関連する問題