2017-05-02 12 views
-1

私は学校のための私の最初のデータベースプロジェクトに取り組んでいます。私はうまくいくと思っていましたが、nullポインターの例外が発生しました。私はその状況をどのように修正するかわかりません。割り当ては、アクセスデータベースを開いて読み込み、そこから情報を引き出すことです最小の残高で顧客を見つける。nullポインターデータベースへのアクセス時の例外

package dbproject; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class MyFirstDB { 


public static void main(String[] args) 
{ 
    ResultSet resultSet = null; 
    double totalPref = 0.0; 
    double lowestBalPref = 1000000; 
    String lowestBalCust = null; 
    double highestBalPref = 0.0; 
    String highestBalCust = null; 
    double totalBalance = 0.0; 
    ResultSet rs = null; 
    String convertTo = ""; 
    double result = 0.0; 
    long lngCN = 0; 
    String query = null; 

    String url = "jdbc:ucanaccess://c:/cps/ms121.accdb"; 

    try{ 
     Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 

     Connection con = DriverManager.getConnection(url); 

     if(con!=null){ 
      System.out.println("Connecton Successful!"); 

     } 
     else{ 
      System.out.println("Connection Unsuccesful!"); 
      System.exit(0); 
     } 



     Statement statement = con.createStatement(); 
     if(statement != null) 
      System.out.println("Statement is not null"); 

     resultSet = statement.executeQuery("SELECT * FROM CUSTOMER where preferred = 'y'"); 

     while(resultSet.next()){ 
//    System.out.println(resultSet.getString("CustomerName")); 
      totalPref = totalPref + 1; 
      if(rs.getDouble("Balance") < lowestBalPref){ 
       lowestBalCust = rs.getString("CustomerName"); 
//    System.out.println(resultSet.getDouble("Balance")); 
      } 
     } 
     System.out.println("Total Preferred Customers is " + totalPref); 
     System.out.println("The Customer with the lowest balance is " + lowestBalCust); 

     if (con != null) 
      con.close(); 

    }catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
} 

特にこれらの行は、エラーの原因となっているように見える:この行の

+2

初期化されていない 'rs'変数を取り除き、代わりに' resultSet'を使います。 – Berger

+0

2つの 'resultSet'はなぜですか? – yogidilip

+0

rsがnull –

答えて

0
   if(rs.getDouble("Balance") < lowestBalPref){ 
       lowestBalCust = rs.getString("CustomerName"); 

するSystem.out.println(+ lowestBalCust "最低残高を持つ顧客が") ;

あなたがlowestBalCust propertieを印刷しようとしているが、このプロパティがnullで開始します。この条件がfalseの場合は、nullポインタexeptionを取得します

String lowestBalCust = null; 

、そう、あなたがいることを、データベースにチェックしなければなりませんBalanceCustomerNameの値がnullの... rs = nullは...ついに

  if(rs.getDouble("Balance") < lowestBalPref){ 
       lowestBalCust = rs.getString("CustomerName"); 
      } 

存在します!結果セットを変数に代入する

resultSet = statement.executeQuery("SELECT * FROM CUSTOMER where preferred = 'y'"); 

     while(resultSet.next()){ 
//    System.out.println(resultSet.getString("CustomerName")); 
      totalPref = totalPref + 1; 
      if(resultSet .getDouble("Balance") < lowestBalPref){ 
       lowestBalCust = resultSet .getString("CustomerName"); 
//    System.out.println(resultSet.getDouble("Balance")); 
      } 
     } 
     System.out.println("Total Preferred Customers is " + totalPref); 
     System.out.println("The Customer with the lowest balance is " + lowestBalCust); 
+0

結果セットをチェックしてください(あなたは2つあります) –

関連する問題