2011-12-31 2 views
0

Я пишу общий класс SQLHelper для использования в моих проектах Android. однако я новичок в андроиде, поэтому я не знаю, какие библиотеки следует использовать для возврата данных. Мой DBHelper расширяет SQLiteOpenHelper, и я использую методы этого класса.Android DB Helper Класс

Для запросов «Выбрать», с какого типа я должен вернуться? (например, DataSet в .NET) Для запросов «Обновить», что я должен получить в качестве параметров?

Я хочу генерировать SQL-запросы.

т. Е. Для вставки, я использовал параметры и TableName.

ответ

3

Взгляните на этот код, который я использую для создания примера проекта. Он дает вам ВСЕ, что вам нужно знать, как выполнять и использовать SQLitedatabase. Он отвечает на оба ваших вопроса. В примере используется название, автор, номер, рейтинг и статус пользователя в книге, вставляется в базу данных, позволяет обновлять данные и удалять их один за другим.

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 для возврата данных. Но мне интересно, есть ли у android лучший класс для возвращения данных? как DataSet, более полезный? – ahmet

+1

Курсор - это то, что используют большинство разработчиков. За 4 года развития я не видел никого другого. Не сказать, что это невозможно сделать. –

+0

Тогда хорошо. Это значит, что это тоже полезно для меня. Спасибо за ответы. – ahmet

Смежные вопросы