SQLiteOpenHelper

30484 ワード

本論文は、http://code.google.com/p/androidlearn/wiki/SQLiteOpenHelperから回転する。
 
SQLiteOpenHelper類を継承し、構造方法においてそれぞれConttext、データベース名、CurorFactory(一般的にnullに入ってきたが、デフォルトデータベース)、データベースバージョン番号(負の数ではない)が必要となります。SQLiteOpenHelperで最初に実行されるのは、onCreate方法である(shujkが初めて作成された時)。コンストラクタでは本当にデータベースを作成していませんが、getWritable DatabaseまたはgetReadable Databaseメソッドを呼び出した時に、本当にデータベースを作成して、SQLiteDatabaseオブジェクトに戻ります。
public class MyDataBaseAdapter 
{ 
   
// log 
   
private static final String TAG = "MyDataBaseAdapter"; 
 
   
//  
   
public static final String KEY_ID = "_id"; 
 
   
//  
   
public static final String KEY_NUM = "num"; 
   
// id 
   
public static final String KEY_DATA = "data"; 
 
   
// data 
   
private static final String DB_NAME = "Examples_06_06.db"; 
         
   
//  
   
private static final String DB_TABLE = "table1"; 
         
   
//  
   
private static final int DB_VERSION = 1; 
 
   
// Context  
   
private Context mContext = null; 
         
   
//  
   
private static final String DB_CREATE = "CREATE TABLE " + DB_TABLE + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NUM + " INTERGER,"+ KEY_DATA + " TEXT)"; 
 
   
// open() ,  
   
private SQLiteDatabase mSQLiteDatabase = null; 
 
   
// SQLiteOpenHelper  
   
private DatabaseHelper mDatabaseHelper = null; 
         
         
   
private static class DatabaseHelper extends SQLiteOpenHelper{ 
 
     
/* - */ 
     
DatabaseHelper(Context context){ 
 
         
// getWritableDatabase()  
         
// getReadableDatabase()  
         
//  
         
super(context, DB_NAME, null, DB_VERSION); 
     
} 
 
     
/* */ 
     
@Override 
     
public void onCreate(SQLiteDatabase db){ 
 
         
//  
         db
.execSQL(DB_CREATE); 
     
} 
 
     
/* */ 
     
@Override 
     
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 
 
         db
.execSQL("DROP TABLE IF EXISTS notes"); 
         onCreate
(db); 
     
} 
   
} 
         
   
/* - Context */ 
   
public MyDataBaseAdapter(Context context){ 
 
         mContext
= context; 
   
} 
 
 
   
// ,  
   
public void open() throws SQLException{ 
 
         mDatabaseHelper
= new DatabaseHelper(mContext); 
         mSQLiteDatabase
= mDatabaseHelper.getWritableDatabase(); 
   
} 
 
 
   
//  
   
public void close(){ 
 
         mDatabaseHelper
.close(); 
   
} 
 
   
/* */ 
   
public long insertData(int num, String data){ 
 
         
ContentValues initialValues = new ContentValues(); 
         initialValues
.put(KEY_NUM, num); 
         initialValues
.put(KEY_DATA, data); 
 
         
return mSQLiteDatabase.insert(DB_TABLE, KEY_ID, initialValues); 
   
} 
 
   
/* */ 
   
public boolean deleteData(long rowId){ 
 
         
return mSQLiteDatabase.delete(DB_TABLE, KEY_ID + "=" + rowId, null) > 0; 
   
} 
 
   
/* Cursor */ 
   
public Cursor fetchAllData(){ 
 
         
return mSQLiteDatabase.query(DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, null, null, null, null, null); 
   
} 
 
   
/* */ 
   
public Cursor fetchData(long rowId) throws SQLException{ 
 
     
Cursor mCursor = mSQLiteDatabase.query(true, DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, KEY_ID + "=" + rowId, null, null, null, null, null); 
 
     
if (mCursor != null){ 
 
         mCursor
.moveToFirst(); 
     
} 
     
return mCursor; 
 
   
} 
 
   
/* */ 
   
public boolean updateData(long rowId, int num, String data){ 
 
     
ContentValues args = new ContentValues(); 
      args
.put(KEY_NUM, num); 
      args
.put(KEY_DATA, data); 
 
     
return mSQLiteDatabase.update(DB_TABLE, args, KEY_ID + "=" + rowId, null) > 0; 
   
} 
         
}