2012-01-04 25 views
0

次のコードを使用して、MySqlデータベースからデータを取得します。 GContnStrは私がデータベースに接続するために呼び出す接続メソッドです。しかし、このコードを使用すると、以下の例外があります。どうすればこの問題を解決できますか?MySqlデータベースからJavaに値を取得

package designstudent; 

import java.sql.*; 
import java.awt.event.*; 
import java.beans.EventHandler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.table.DefaultTableModel; 
import java.sql.*; 
import java.util.ArrayList; 
import java.util.jar.Attributes.Name; 
import javax.swing.JOptionPane; 
import javax.swing.ListSelectionModel; 
import java.util.ArrayList.*; 
import java.util.Vector; 
import javax.swing.*; 
public class combobutton extends javax.swing.JFrame { 

    Statement TmpStmnt=null; 
    ResultSet TmpDetlRs=null; 
    GContnStr GCS=new GContnStr(); 
    String GStrSql=null; 


     private String PFldname="StudClass"; 
     private String PTName="studentmaster"; 



     enum options{ 
      DBTABLE, 
      DBQryDef 
        } 

    String PoptnStr; 

    options val = options.valueOf(PoptnStr); 

    public combobutton() throws SQLException { 
     combo(PoptnStr, TmpStmnt, TmpDetlRs, GStrSql, PFldname, PTName); 
     initComponents(); 
    } 
public void combo(String PoptnStr,Statement TmpStmnt,ResultSet TmpDetlRs,String StrSql,String PFldName,String PTName) throws SQLException 
    { 
     cbx1.removeAllItems(); 
     cbx2.removeAllItems(); 
     cbx3.removeAllItems(); 
     String DBTABLE = null; 
     try{ 
     switch(val) 
       { 
      case DBTABLE: 
      case DBQryDef: 
       if(PoptnStr==DBTABLE) 
       { 
        GCS.GContnStr(); 
        GStrSql="select '"+ PFldName+"' from '"+PTName+"'"; 
        TmpDetlRs=TmpStmnt.executeQuery(GStrSql); 
        while(TmpDetlRs.next()) 
        { 
         String TmpOb1=TmpDetlRs.getString("StudClass"); 
         System.out.println(TmpOb1); 
        } 

       } 
     } 
     } 
     catch(Exception e){ 
      System.out.println(e); 

     } 
    } 

    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        new combobutton().setVisible(true); 

       } catch (SQLException ex) { 
        Logger.getLogger(combobutton.class.getName()).log(Level.SEVERE, null, ex); 
       } 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JComboBox cbx1; 
    private javax.swing.JComboBox cbx2; 
    private javax.swing.JComboBox cbx3; 
    // End of variables declaration     

} 

ERROR

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Name is null 
     at java.lang.Enum.valueOf(Enum.java:236) 
     at designstudent.combobutton$options.valueOf(combobutton.java:30) 
     at designstudent.combobutton.<init>(combobutton.java:37) 
     at designstudent.combobutton$1.run(combobutton.java:122) 
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:660) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 
BUILD SUCCESSFUL (total time: 1 second) 
+0

文字列PoptnStrが空(NULL)です。それを初期化する。 –

答えて

2

この問題はデータベースとは関係ありません。あなたの問題はここです:

String PoptnStr; 
options val = options.valueOf(PoptnStr); 

あなたはまたoptions.valueOf(null);

を書いたので、すぐに慣例により、クラス名は大文字で始める必要があり、それを使用し、nullに初期化され、あなたのStringを作成します(optionsOptions)、インスタンス変数名はラクダ文字(例:PoptnStrpoptnStr)にする必要があります。

+0

options.valueOf(null)を与えると、同じ例外が発生します – javabeginner

+0

もちろん、これは 'null'に対応するEnum値を取得しようとしているからです。私はあなたにそうしないよう伝えていました。 – Paul

+0

どのように私はそのプログラムのDBTABLEの値を初期化できますか – javabeginner

1

あなたのフィールド

options val = options.valueOf(PoptnStr); 

の初期化は、NPEが発生します。このコードが実行される時点では、PoptnStrに値が割り当てられません。初期化をコンストラクタに移動し、PoptnStrが既に設定されていることを確認してください。

1

あなたは

String PoptnStr = options.DBQryDef.name(); 

String PoptnStr = options.DBTABLE.name(); 

以下のようにそして、あなたがDBTABLEとDBQryDefのためのvalに切り替えてもDBTABLEヌル文字列と比較されている理由を理解didntのいずれかPoptnStrを初期化した後試すことができます。

//assigning the val variable 
    options val = options.valueOf(PoptnStr); 

//..... your other code 

    //And comparing it as below: 
    String DBTABLE = null; 
     try{ 
     switch(val) 
       { 
      case DBTABLE: 
      case DBQryDef: 
       if(PoptnStr==DBTABLE) 
       { 

ことができますあなたはもう少し詳しく説明しますか?

関連する問題