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

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

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

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("修改数据库版本号");
       }
}

三.创建数据库

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

四.更新数据库版本

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

五.向数据库中插入信息

//创建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);

六.更新数据库信息

//创建一个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"});

七.查询数据库

//调用两个参数的构造函数实例化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);
       }

你可能感兴趣的:(sql,数据库,String,sqlite,user,null)