使用SQLiteOpenHelper类对数据库简单操作


一.当操作SQLite数据库时需要,需要得到一个SQLiteOpenHelper对象。但由于SQLiteOpenHelper是一个抽象类,需要自定义一个类来继承它。这样自定义类就实现了SQLiteOpenHelper中的所有方法。

二.创建一个类并继承SQLiteOpenHelper,实现其中的方法。并在构造函数中调用基类的构造函数。

[java]
  1. public class SqlLiteHelper extends SQLiteOpenHelper {  
  2.        private static final int VERSION =1;  
  3.        //TODO 实现基类的构造函数,四个参数的   
  4.        public SqlLiteHelper(Contextcontext , String DBname ,CursorFactory factory , int version)  
  5.        {  
  6.               super(context, DBname,factory, version);  
  7.        }  
  8.        //TODO 实现基类的构造函数,三个参数的   
  9.        public SqlLiteHelper(Context context, String DBname ,int version ) {  
  10.               this(context, DBname, null,version);  
  11.                 
  12.        }  
  13.        //TODO 实现基类的构造函数,两个参数的   
  14.        public SqlLiteHelper(Contextcontext,String DBname) {  
  15.               this(context, DBname, null,VERSION);  
  16.                 
  17.        }  
  18.          
  19.        //当创建数据库时执行   
  20.        @Override  
  21.        public void onCreate(SQLiteDatabasedb) {  
  22.               // TODO Auto-generatedmethod stub   
  23.               System.out.println("创建数据库");  
  24.               db.execSQL("Createtable user(id int , name varchar(20))");  
  25.        }  
  26.   
  27.        //当更新数据库版本时执行   
  28.        @Override  
  29.        public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  30.               //TODO Auto-generated method stub   
  31.               System.out.println("修改数据库版本号");  
  32.        }  
  33. }  

三.创建数据库

[java]
  1. //创建自定义SqlLiteHelper类的实例,调用两个参数的构造函数   
  2. SqlLiteHelper mySqlLiteHelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");  
  3. //只有调用了getWritableDatabase()方法才会执行SqlLiteHelper类中的OnCreate中的代码   
  4. mySqlLiteHelper.getWritableDatabase();  

四.更新数据库版本

[java]
  1. //调用三个参数的构造函数更新数据库的版本,数据库版本只能递增。   
  2. SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test"2);  
  3. myhelper.getReadableDatabase();  

五.向数据库中插入信息

[java]
  1. //创建SqlLiteHelper自定义类对象,并调用两个参数的构造函数   
  2. SqlLiteHelper  myhelper = newSqlLiteHelper(getApplicationContext(), "paj_db_test");         
  3. //创建一个ContenValues对象,存储数据   
  4. ContentValues contentValues = new ContentValues();  
  5. //把数据填充到ContentValues对象中,ContentValues对象中的键和值对应数据库中的列和值。值必须与数据列的类型相同。   
  6. contentValues.put("id"2);  
  7. contentValues.put("name""zhangsan");  
  8. //创建可写的SQLiteDatabase对象   
  9. SQLiteDatabase db = myhelper.getWritableDatabase();  
  10. //调用insert方法写入数据库.第一个参数为表名,第二个为null,第三个参数为CntentValues对象。   
  11. db.insert("user"null, contentValues);  

六.更新数据库信息

[java]
  1. //创建一个ContentValue对象存放要更新的信息   
  2. ContentValues contentValues = new ContentValues();  
  3. //把要更新的信息存放到ContentValues对象中。   
  4. //第一个参数对应数据库中的列,第二个参数对应列的值。   
  5. contentValues.put("name""zhangsanfeng");  
  6. //创建SqlLiteHelper对象   
  7. SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test");  
  8. //创建一个可写的SQLiteDatabase对象   
  9. SQLiteDatabase db = myhelper.getWritableDatabase();  
  10. //使用update更新数据库   
  11. //第一个参数是数据库表名   
  12. //第二个参数是ContentValues对象   
  13. //第三个参数是SQL语句中的Where条件子语句,其中的?对应第四个参数中String数组。数组中有几个字符就有几个问号。   
  14. //第四个参数是Where的条件。使用String数组存放Where条件   
  15. db.update("user", contentValues, "id=?", newString[]{"1"});  

七.查询数据库

[java]
  1. //调用两个参数的构造函数实例化SqlLiteHelper自定义类   
  2. SqlLiteHelper myhelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");  
  3. //创建只读的SQLiteDatabase对象   
  4. SQLiteDatabase db = myhelper.getReadableDatabase();  
  5. //调用SQLitedatabase的query方法获取检索结果并放入Cursor对象中。   
  6. //query方法的第一个参数是表名   
  7. //第二个参数是使用String数组存放列名,一个列明占用一个元素   
  8. //第三个参数是SQL语句中的Where条件子语句,其中的?对应第四个参数中String数组。数组中有几个字符就有几个问号。   
  9. //第三个参数是Where的条件   
  10. //第四个参数分组   
  11. //第五个参数是SQL中的having   
  12. //第六个参数是排序   
  13. Cursor cursor = db.query("user"null,nullnullnullnullnull);  
  14. //使用cursor.moveToNext()把游标下移一行。游标默认在第一行的上一行。   
  15. while (cursor.moveToNext()) {  
  16.     //使用GetString获取列中的值。参数为使用cursor.getColumnIndex("name")获取的序号。   
  17.        String nameString =cursor.getString(cursor.getColumnIndex("name"));  
  18.        String idsString = cursor.getString(cursor.getColumnIndex("id"));  
  19.        System.out.println("ID--->"+idsString);  
  20.        System.out.println("NAME--->"+nameString);  
  21.        }  

相关内容