2012-04-13 16 views
2

私のアプリがクラッシュする理由はわかりません。私はsqliteで作成されたデータベースをインポートしましたが、今はその情報を読みたいだけです。SQLiteデータベースから読むAndroid

はここに私のコード

public class goodwillDatabase { 

     private static final String DATABASE_NAME="goodwill"; 
     private SQLiteDatabase ourDatabase; 

     //set up variables 
     static final String candidate_id = "_id"; 
     static final String candidate_name = "name"; 
     static final String candidate_street_address = "email"; 

     //set up the table...store different tables in database 
     private static final String DATABASE_TABLE = "candidate"; 
     private static final int DATABASE_VERSION = 1; 

     //create instance of this class 
     //creates, opens and closes database 
     private DbHelper ourHelper; 

     private final Context ourContext; 


     //create database on a different thread 

     private static class DbHelper extends SQLiteOpenHelper{ 

      public DbHelper(Context context) { 
       super(context, DATABASE_NAME, null, DATABASE_VERSION); 
       // TODO Auto-generated constructor stub 

      } 

      //first time we ever create database, this is called 
      @Override 
      public void onCreate(SQLiteDatabase db) { 



      } 

      //if already created, just update 
      @Override 
      public void onUpgrade(SQLiteDatabase db, int oldVersion, 
        int newVersion) { 
       // TODO Auto-generated method stub 

       db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE); 
       onCreate(db); 
      } 


     } 


     public goodwillDatabase(Context c){ 
      //make context of this class equal to whatever is being passed in 
      ourContext = c; 

     } 

     //opens database 
     //sql excpetion for the try catch 
     public goodwillDatabase open() throws SQLException{ 

      //create a new helper, pass in context from the method above 
      ourHelper = new DbHelper(ourContext); 
      ourDatabase = ourHelper.getWritableDatabase(); 


      return this; 
     } 

     //closes the class...sqlite helper, dbhelper 
     public void close(){ 

      ourHelper.close(); 
     } 

     public String getData() { 
      // TODO Auto-generated method stub 

      //create a new helper, pass in context from the method above 


      String [] columns = new String []{ candidate_name, candidate_street_address}; 


      Cursor d = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 


      String result = " "; 
      //String[] result = columns; 
      /* 

      int iRow = c.getColumnIndex(canadiate_id); 
      int iName = c.getColumnIndex(canadiate_name); 
      int iStreet = c.getColumnIndex(canadiate_street_address);*/ 
      /* 
      //start at the beginning, keep moving if you haven't made it to the last 
      for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 
      { 
       result = result + c.getString(iRow) + " " + c.getString(iName) + 
      " " + c.getString(iStreet) + "\n"; 

      } 

      */ 
      return result; 

     } 

}だ

*カーソルD = ourDatabase.query(DATABASE_TABLE、列、NULL、NULL、NULL、NULL、NULL); *ラインはクラッシュする場所です。カーソルがどこを指すのかわからない場所ですか?私はデータベースやプログラミングに精通していないので、あなたが私に与えることができるどんな助けでも感謝します!エラー自体のlogcatを投稿してください

+0

を:(しない – Sam

+0

誤差があります。 - - – user1332648

+0

[logcatトレース]の例を示します(http://stackoverflow.com/questions/10032510/null-pointer-例外アダプタ/ 10032937#10032937)Eclipseを使用している場合、このウィンドウのデフォルトの場所は画面の右下にあります。この情報なしで盲目的に推測する。 – Sam

答えて

0

Cursor d = ourDatabase.rawQuery("select name,email from candidate",null); 

クエリを試してみて、rawQueryは、同じ目的を果たしますが、時にはそれらのいずれかが動作し、他の

関連する問題