2011-07-04 9 views
0

こんにちは私は、次のコードを試して、テーブルのレコードのリストを出力としてリストビューに正しく渡しました。アンドロイドアプリケーション開発のSQLiteデータベースの動作

私はMain_Activityクラスの横にある次の2つのメソッドについてコメントしても、データベースレコードはロードされません。 createTable(); insertData(); ;

私はそれをシャットダウンした後に同じアプリケーションを開いたときに、テーブルを作成して同じレコードセットを再度挿入する必要があるのだろうかと思っていました。

は、誰もが...それはそうなぜ起こるかのアイデアを持っています..あなたは、DBを作成しているあなたのtry文で

public class Main_Activity extends ListActivity { 

private static String SAMPLE_TABLE_NAME = "PERSONS_TABLE"; 
private SQLiteDatabase sampleDB = null; 
private List<String> results = new ArrayList<String>(); 
private Cursor cursor = null; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    try 
    { 
     sampleDB = openOrCreateDatabase("NAME", MODE_PRIVATE, null); 
     createTable(); 
     insertData(); 
     lookupData(); 
     this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results)); 
    } 
    catch (SQLiteException se) 
    { 
     Log.e(getClass().getSimpleName(), "Could not create or Open the database"); 
    } 
    finally 
    { 

     if (sampleDB != null) 
      sampleDB.execSQL("DELETE FROM " + SAMPLE_TABLE_NAME); 
     sampleDB.close(); 
    } 

} 

private void createTable() 
{ 
    sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + 
       SAMPLE_TABLE_NAME + 
       " (PERSON_NAME VARCHAR, " + 
       " COUNTRY VARCHAR, " + 
       " AGE INT(3));"); 
} 

private void insertData() 
{ 
    sampleDB.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ('James','ENGLAND',25);"); 
    sampleDB.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ('Dave','USA',18);"); 
    sampleDB.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ('Jean-Paul','FRANCE',33);"); 
    sampleDB.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ('Sergio','SPAIN',42);"); 
    sampleDB.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ('Hitori','JAPAN',73);"); 
} 

private void lookupData() 
{ 
    cursor = sampleDB.rawQuery("SELECT PERSON_NAME, COUNTRY, AGE FROM " + 
      SAMPLE_TABLE_NAME + 
      " where AGE > 10 ", null); 

    if (cursor != null) 
    { 
     if (cursor.moveToFirst()) 
     { 
      do 
      { 
       String personName =  cursor.getString(cursor.getColumnIndex("PERSON_NAME")); 
       String country = cursor.getString(cursor.getColumnIndex("COUNTRY")); 
       int age = cursor.getInt(cursor.getColumnIndex("AGE")); 
       results.add("" + personName + ", " + country + ", " + age); 
      } 
      while (cursor.moveToNext()); 
     } 
     cursor.close(); 
    } 
} 
} 

答えて

1

をありがとう、それを移入...そして最終的には声明の中で、あなたはすべて削除記録。だからあなたのDBは常に空です。試してみたり、キャッチしたりした後は、どんな場合でも最終的に実行されます。

+0

ありがとうございました....ポイントを得ました... !!!! – JibW

+0

あなたが正しいと有用であれば答えを受け入れるべきです;) – woodshy

関連する問題