2011-12-31 6 views
0

私はアンドロイドプロジェクトで使用する汎用のSQLHelperクラスを作成しています。しかし、私はアンドロイドについての初心者なので、データを返すためにどのライブラリを使うべきか分かりません。私のDBHelperSQLiteOpenHelperに拡張され、そのクラスのメソッドを使用します。Android DBヘルパークラス

「選択」クエリでは、どのタイプを返す必要がありますか? (DataSet、.NETの場合) 「更新」クエリでは、パラメータとしてどのように取得する必要がありますか?

SQLクエリを生成します。

つまり、私はContentValuesTableNameパラメータを使用しました。

答えて

3

私が使用するこのコードを見て、サンプルプロジェクトを作成します。これは、SQLデータベースを実行して使用するまでのすべてのことを知る必要があります。それは両方のあなたの質問に答える。 この例では、書籍の書籍タイトル、著者、ISBN番号、評価、ステータスをデータベースに挿入し、データを削除して1つずつ取り込むことができます。

public class DbAdapter { 


    private static final String DATABASE_NAME = " nba"; 
    private static final String DATABASE_TABLE = "bookList"; 
    private static final int DATABASE_VERSION = 1; 
    private static String TAG = "Upgrading Database!"; 
    public static final String KEY_BOOK = "book"; 
    public static final String KEY_AUTHOR = "author"; 
    public static final String KEY_ISBN = "isbn"; 
    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_RATING = "rating"; 
    public static final String KEY_STATUS = "status"; 


    private DatabaseHelper mDbHelper; 
    private SQLiteDatabase mDb; 


    private static final String DATABASE_CREATE = 
      " create table " + DATABASE_TABLE + " (" 
      + KEY_ROWID + " integer primary key autoincrement, " 
      + KEY_AUTHOR + " text not null, " 
      + KEY_BOOK + " text not null, " 
      + KEY_RATING + " text not null, " 
      + KEY_STATUS + " text not null, " 
      + KEY_ISBN + " text not null); "; 

    private final Context mCtx; 


    public DbAdapter (Context ctx){ 
     this.mCtx = ctx; 



      } 

      private static class DatabaseHelper extends SQLiteOpenHelper{ 
      DatabaseHelper(Context context){ 
       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) { 
        db.execSQL("ALTER TABLE bookList ADD COLUMN String status"); 

     } 
    } 
      public DbAdapter open() throws SQLException{ 

       mDbHelper = new DatabaseHelper(mCtx); 
       mDb = mDbHelper.getWritableDatabase(); 
       return this; 
      } 
      public void close(){ 
       mDbHelper.close(); 
      } 

      public long createBook(String book, String author, String isbn, float rating, String status){ 
       ContentValues initialValues = new ContentValues(); 
       initialValues.put(KEY_BOOK, book); 
       initialValues.put(KEY_AUTHOR, author); 
       initialValues.put(KEY_ISBN, isbn); 
       initialValues.put(KEY_RATING, rating); 
       initialValues.put(KEY_STATUS, status); 



       return mDb.insert(DATABASE_TABLE, null, initialValues); 

      } 
      public boolean deleteBook(long rowId){ 
       return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; 

      } 
      public Cursor fetchAllBooks(){   
       return mDb.query(DATABASE_TABLE, new String[]{KEY_BOOK, KEY_ISBN,KEY_AUTHOR,KEY_ROWID, KEY_RATING, KEY_STATUS}, null, null, null, null, null); 
      } 
      public Cursor fetchBook(long rowId) throws SQLException{ 
       Cursor mCursor = 
       mDb.query(DATABASE_TABLE, new String[]{KEY_BOOK, KEY_AUTHOR,KEY_ROWID, KEY_ISBN, KEY_RATING, KEY_STATUS}, KEY_ROWID + "=" + 
          rowId, null, null, null, null); 

       if(mCursor != null){ 
        mCursor.moveToFirst(); 
       } 
       return mCursor; 

      } 
      public boolean updateBook(long rowId, String book, String author, String isbn, float rating, String status){ 
       ContentValues args = new ContentValues(); 
       args.put(KEY_BOOK, book); 
       args.put(KEY_AUTHOR, author); 
       args.put(KEY_ISBN, isbn); 
       args.put(KEY_RATING, rating); 
       args.put(KEY_STATUS, status); 


       return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null)> 0; 


      } 


} 
+0

回答ありがとうございます。 Cursorクラスを使用してデータを返します。しかし、アンドロイドがデータを返すためのより良いクラスを持っているのだろうか? DataSetのように、より有用なもの? – ahmet

+1

カーソルは、ほとんどの開発者が使用するものです。開発の私の4年間で私は誰も他のものを使用することを見ていない。それができないと言うわけではありません。 –

+0

それからOK。それは私にとっても役立つことを意味します。答えをありがとう。 – ahmet