2012-02-08 5 views
0

私はリスト上のデータベースからデータを取得するアプリケーションのeラーニングタイプに取り組んでいます。実際のデバイスでデータベースを実行しているときに、データベースからデータを取得することができません

エミュレータで正常に動作しますが、実際のデバイスでそのアプリケーションのAPKファイルを使用するとリストにデータが表示されず、データベースがwindows-file explorer-package-data-databaseに保存されます-table_name。

私はこのサイトに

http://anujarosha.wordpress.com/2011/12/19/how-to-retrieve-data-from-a-sqlite-database-in-android/

を参照しています。ここ最初のレコードの前に配置されているカーソルを返すsqlitedatabase.query()データベース

list_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, namelist1()); 

     list1.setAdapter(list_adapter); 

    } 

    public List<String> namelist1() 
    { 
     // We have to return a List which contains only String values. Lets create a List first 
     List<String> namelist= new ArrayList<String>(); 

     // First we need to make contact with the database we have created using the DbHelper class 

     Database_helper_class open_database_helper= new Database_helper_class(this); 
     // Then we need to get a readable database 
     SQLiteDatabase sqlitedatabase = open_database_helper.getReadableDatabase(); 
     // We need a a guy to read the database query. Cursor interface will do it for us 
     //(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 
     Cursor cursor =sqlitedatabase.query(open_database_helper.TABLE_E_LEARNING,null,null,null,null,null,null); 
     //above query is read all the database column 

     // Cursor object read all the fields. So we make sure to check it will not miss any by looping through a while loop 

     while(cursor.moveToNext()){ 
      String str_name = cursor.getString(cursor.getColumnIndex(Database_helper_class.QUES_COLUMN)); 
      String str_id = cursor.getString(cursor.getColumnIndex(Database_helper_class.ANS_COLUMN)); 
      //double str_gpa = cursor.getDouble(cursor.getColumnIndex(Database_helper_class.GPA_COLUMN)); 


      // Finish reading one raw, now we have to pass them to the POJO 
      nameclass nameclassobj1=new nameclass(); 
      nameclassobj1.setname(str_name); 
      nameclassobj1.setid(str_id); 
      //nameclassobj1.setgpa(str_gpa); 

      // Lets pass that POJO to our ArrayList which contains undergraduates as type 
       pojo_namelist.add(nameclassobj1); 

      // But we need a List of String to display in the ListView also. 
       //That is why we create "nameList" 
      namelist.add(str_name); 

     } 
     sqlitedatabase.close(); 
+0

ログにエラーがありますか?クエリを実行するときに有効なカーソルを取得していますか? – Asahi

+0

はい、実際のデバイスではなく、エミュレータで正常に動作しています... – Beenal

答えて

0

は、私はデバイス上でそれを取得しなかった理由つまり、実際にデータがデータベースに保存されていませんでした

他のアプリケーション

で忙しくなりました。 これで動作します。

0

を使用して私のコードの抜粋です。そこからデータにアクセスする前にmoveToFirst()に電話してください。

0

DBHelper.classでデータベースパスを確認してください。その後、whileループを呼び出す前に、以下の行に書いてください。

cursor.moveToFirst(); 

これは最初のレコードをポイントし、whileループが機能します。

0

はこのようにそれを試してみてください。

// Cursor object read all the fields. So we make sure to check it will not miss any by looping through a while loop 
cursor.moveToFirst(); 
    while(!cursor.isAfterLast()){ 
     String str_name = cursor.getString(cursor.getColumnIndex(Database_helper_class.QUES_COLUMN)); 
     String str_id = cursor.getString(cursor.getColumnIndex(Database_helper_class.ANS_COLUMN)); 
     //double str_gpa = cursor.getDouble(cursor.getColumnIndex(Database_helper_class.GPA_COLUMN)); 


     // Finish reading one raw, now we have to pass them to the POJO 
     nameclass nameclassobj1=new nameclass(); 
     nameclassobj1.setname(str_name); 
     nameclassobj1.setid(str_id); 
     //nameclassobj1.setgpa(str_gpa); 

     // Lets pass that POJO to our ArrayList which contains undergraduates as type 
      pojo_namelist.add(nameclassobj1); 

     // But we need a List of String to display in the ListView also. 
      //That is why we create "nameList" 
     namelist.add(str_name); 

    } 

)(isAfterLastを使用 - チェックする方法を、あなたはあなたのカーソルの最後に達した場合。返事が遅れて申し訳ありません

関連する問題