SQLiteOpenHelper

关于SQLiteOpenHelper:
1.SQLite创建

public static final String CREATE_TABLE_PROVINCE =
"createtable Province ("
+ "id integer primary key autoincrement, "
+ "province_name text, "
+ "province_code text)";

onCreate(SQLiteDatabase db):
当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。

public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_PROVINCE);
        Log.i("CoolWeatherOpenHelper","onCreate");
    }

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):
当数据库需要被更新的时候执行,例如删除久表,创建新表。

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    switch newVersion:
        case 1:
             //todo
        case 2:
             //todo
        case 3:
             //todo
             break;
    }

2.SQLite的使用

Android提供了一个名为SQLiteDatabase的类,它封装了一些操作数据库的API。使用它能实现基本的CRUD操作,通过getWritableDatabase()和getReadableDatabase()可以获取数据库实例。

可以使用一个类来封装增添删改操作。

public class DB {
    private static DB Db;
    private SQLiteDatabase db;
    //创建DB
    private DB(Context context){
        OpenHelper dbHelper = new OpenHelper(context, DB_NAME, null, VERSION);
        db = dbHelper.getWritableDatabase();
    }
    //获取DB对象
    public synchronized static DB getInstance(Context context){
        if(Db == null){
            Db = new DB(context);
        }
        return  Db;
    }
    //CURD  Code
}
//db可以执行的操作
// 查询
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,String groupBy, String having,String orderBy,String limit);
/**
* table  表名
* columns 想要显示的列,若为空则返回所有列,不建议设置为空,如果不是返回所有列
* selection where子句,声明要返回的行的要求,如果为空则返回表的所有行
* selectionArgs   where子句对应的条件值
* groupBy  分组方式
* having having条件,若为空则返回全部(不建议)
* orderBy   排序方式,为空则为默认排序方式
* limit    限制返回的记录的条数,为空则不限制
* Cursor  返回一个Cursor对象
*/
ContentValues cv = new ContentValues();
String[] args = {String.valueOf("a")};
query("user", new String[] { "username","password" },"username=?", args, null,null, null, null);


//插入
public long insert (String table, String nullColumnHack, ContentValues values);
/**
* table  表名
* nullColumnHack 当values参数为空或者里面没有内容的时候,我们insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里指定一个 列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入
* values 一个ContentValues对象,类似一个map.通过键值对的形式存储值
* long  •the row ID of the newly inserted row, or -1 if an error occurred
*/
ContentValues cv = new ContentValues();
cv.put("username", "a");
cv.put("password", "b");
insert("user", null, cv);

//更新
public int update (String table, ContentValues values, String whereClause, String[] whereArgs);
/**
*  table  表名
*  values 一个ContentValues对象,类似一个map.通过键值对的形式存储值
* whereClause 可选的where语句whereClause语句中表达式的?占位参数列表
* whereArgs 
*/
ContentValues cv = new ContentValues();
cv.put("username", "c");
cv.put("password", "d");
String[] args = {String.valueOf("a")};
update("user", cv, "username=?",args)

//删除
public int delete (String table, String whereClause, String[] whereArgs)
/**
* table  表名
* whereClause 同上
* whereArgs
*/
ContentValues cv = new ContentValues();
String[] args = {String.valueOf("c")};
delete("user", "username=?", args);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值