一.當操作SQLite數據庫時需要,需要得到一個SQLiteOpenHelper對象。但由於SQLiteOpenHelper是一個抽象類,需要自定義一個類來繼承它。這樣自定義類就實現了SQLiteOpenHelper中的所有方法。
二.創建一個類並繼承SQLiteOpenHelper,實現其中的方法。並在構造函數中調用基類的構造函數。
[java]
- public class SqlLiteHelper extends SQLiteOpenHelper {
- private static final int VERSION =1;
- //TODO 實現基類的構造函數,四個參數的
- public SqlLiteHelper(Contextcontext , String DBname ,CursorFactory factory , int version)
- {
- super(context, DBname,factory, version);
- }
- //TODO 實現基類的構造函數,三個參數的
- public SqlLiteHelper(Context context, String DBname ,int version ) {
- this(context, DBname, null,version);
-
- }
- //TODO 實現基類的構造函數,兩個參數的
- public SqlLiteHelper(Contextcontext,String DBname) {
- this(context, DBname, null,VERSION);
-
- }
-
- //當創建數據庫時執行
- @Override
- public void onCreate(SQLiteDatabasedb) {
- // TODO Auto-generatedmethod stub
- System.out.println("創建數據庫");
- db.execSQL("Createtable user(id int , name varchar(20))");
- }
-
- //當更新數據庫版本時執行
- @Override
- public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- //TODO Auto-generated method stub
- System.out.println("修改數據庫版本號");
- }
- }
三.創建數據庫
[java]
- //創建自定義SqlLiteHelper類的實例,調用兩個參數的構造函數
- SqlLiteHelper mySqlLiteHelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");
- //只有調用了getWritableDatabase()方法才會執行SqlLiteHelper類中的OnCreate中的代碼
- mySqlLiteHelper.getWritableDatabase();
四.更新數據庫版本
[java]
- //調用三個參數的構造函數更新數據庫的版本,數據庫版本只能遞增。
- SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test", 2);
- myhelper.getReadableDatabase();
五.向數據庫中插入信息
[java]
- //創建SqlLiteHelper自定義類對象,並調用兩個參數的構造函數
- SqlLiteHelper myhelper = newSqlLiteHelper(getApplicationContext(), "paj_db_test");
- //創建一個ContenValues對象,存儲數據
- ContentValues contentValues = new ContentValues();
- //把數據填充到ContentValues對象中,ContentValues對象中的鍵和值對應數據庫中的列和值。值必須與數據列的類型相同。
- contentValues.put("id", 2);
- contentValues.put("name", "zhangsan");
- //創建可寫的SQLiteDatabase對象
- SQLiteDatabase db = myhelper.getWritableDatabase();
- //調用insert方法寫入數據庫.第一個參數為表名,第二個為null,第三個參數為CntentValues對象。
- db.insert("user", null, contentValues);
六.更新數據庫信息
[java]
- //創建一個ContentValue對象存放要更新的信息
- ContentValues contentValues = new ContentValues();
- //把要更新的信息存放到ContentValues對象中。
- //第一個參數對應數據庫中的列,第二個參數對應列的值。
- contentValues.put("name", "zhangsanfeng");
- //創建SqlLiteHelper對象
- SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test");
- //創建一個可寫的SQLiteDatabase對象
- SQLiteDatabase db = myhelper.getWritableDatabase();
- //使用update更新數據庫
- //第一個參數是數據庫表名
- //第二個參數是ContentValues對象
- //第三個參數是SQL語句中的Where條件子語句,其中的?對應第四個參數中String數組。數組中有幾個字符就有幾個問號。
- //第四個參數是Where的條件。使用String數組存放Where條件
- db.update("user", contentValues, "id=?", newString[]{"1"});
七.查詢數據庫
[java]
- //調用兩個參數的構造函數實例化SqlLiteHelper自定義類
- SqlLiteHelper myhelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");
- //創建只讀的SQLiteDatabase對象
- SQLiteDatabase db = myhelper.getReadableDatabase();
- //調用SQLitedatabase的query方法獲取檢索結果並放入Cursor對象中。
- //query方法的第一個參數是表名
- //第二個參數是使用String數組存放列名,一個列明占用一個元素
- //第三個參數是SQL語句中的Where條件子語句,其中的?對應第四個參數中String數組。數組中有幾個字符就有幾個問號。
- //第三個參數是Where的條件
- //第四個參數分組
- //第五個參數是SQL中的having
- //第六個參數是排序
- Cursor cursor = db.query("user", null,null, null, null, null, null);
- //使用cursor.moveToNext()把游標下移一行。游標默認在第一行的上一行。
- while (cursor.moveToNext()) {
- //使用GetString獲取列中的值。參數為使用cursor.getColumnIndex("name")獲取的序號。
- String nameString =cursor.getString(cursor.getColumnIndex("name"));
- String idsString = cursor.getString(cursor.getColumnIndex("id"));
- System.out.println("ID--->"+idsString);
- System.out.println("NAME--->"+nameString);
- }