2011-07-27 14 views
0

私は数日間このことを頭に入れていましたが、私はAndroid/JavaでSQLiteデータベースを使用して周りを包み込むことはできません。私はSQLiteデータベースからListArray(または各行につき1つずつ)の2つの行を選択しようとしていますが、それが良いか悪いか分かりません。私は見つけた様々なデータベース・マネージャー・クラスを試しましたが、それらのどれも私が必要とするものはありません。他のデータベース・マネージャーで見たような特別な機能がなければこの単純なタスクを実行できるはずです。既存のSQLiteデータベースからいくつかのデータをクエリしてListArrayに入れて、それを使って作業できるようにする簡単な方法はありますか?私は資産からAndroidデータベースのパスにデータベースをコピーする必要があり、私はその部分を扱うことができることを認識しています。私はまた、行ごとに列の1つを変更できる必要があります。データベースやテーブルや行を作成する必要はありません。私が書いたコード(インターネットからコピーしたもの)はまったく役に立たないと思うので、私はこれを手伝ってくれる人を魅了します。あなたはこのような方法で作成することができますリストアにSQLiteからデータを選択

+0

アクセスしようとしているデータ/情報はありますか?連絡先や通話履歴などのAndroidデータベースから情報にアクセスしようとしていますか? Androidデータベースにアクセスしようとする場合は、通常、ContentProviderを使用することをお勧めします。これは、抽象化の層を提供し、Androidがデータベーストランザクションを処理できるようにします。 – Codeman

+0

それは自分で提供したデータベースです。 – Carnivoris

+0

デバッグに役立つように、使用したソースコードをいくつか提供できますか? – Suchi

答えて

1

:これはあなたのクラスのletの内側になります

private List<MyItem> getAllItems() 
    List<MyItem> itemsList = new ArrayList<MyItem>(); 
    Cursor cursor = null; 
    try { 
     //get all rows 
     cursor = mDatabase.query(MY_TABLE, null, null, null, null, 
       null, null); 
     if (cursor.moveToFirst()) { 
      do { 
       MyItem c = new MyItem(); 
       c.setId(cursor.getInt(ID_COLUMN)); 
       c.setName(cursor.getString(NAME_COLUMN)); 
       itemsList.add(c); 
      } while (cursor.moveToNext()); 
     } 
    } catch (SQLiteException e) { 
     e.printStackTrace(); 
    } finally { 
     cursor.close(); 
    } 
    return itemsList; 
} 

はあなたにも宣言する必要がありますMyDatabaseHelperを言う:

open()close()に使用
private static class DatabaseHelper extends SQLiteOpenHelper{ 

    private final static String DATABASE_CREATE="create table " + MY_TABLE + " (id integer primary key, country string);"; 

    public DatabaseHelper(Context context,String name, CursorFactory factory, int version){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db){ 
     db.execSQL(DATABASE_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
          int newVersion){ 
     Log.w(TAG, "Upgrading database from version " + oldVersion 
       + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS "+ MY_TABLE); 
     onCreate(db); 
    } 
}  

データベース。

+0

もう1つのオプション(私がよく使う)はハッシュマップにこれらの値を格納して、値として_IDを、そしてキーに "検索可能な用語"を格納して、複数のものを作るのではなく、データベーストランザクションが発生します(極端な減速を引き起こす) – Codeman

+0

あなたのデータベースヘルパークラスは私を助けません。それは、私が資産から既存のデータベースをインポートしているときに実行時にデータベースを作成していると仮定していますが、私はそれを回避することができます。このコードについて私が理解していない2つ目は、クエリです。 'cursor = mDatabase.query(MY_TABLE、null、null、null、null、 null、null); ' これは基本的にSELECT * FROM MY_TABLEを実行していますか? – Carnivoris

+0

はい。ドキュメントを参照してください。 –

関連する問題