Android之SQLite数据库简单使用

SQLite数据库

Android系统集成了一个轻量级的数据库:SQLite,他并不像其他数据库一样,他只是一个嵌入式的数据库引擎,专门试用于有限的设备,如Android上适量数据进行存取。
SQLiteDatabase提供了如下静态方法来打开一个文件对应的数据库

1.打开path文件所对应的SQLite数据库
static SQLiteDatabase openDatabase(String path,SQLiteDatabase.CursorFactoryfactory ,int flags):

2.打开或创建(如果不存在)file文件所代表的SQLite数据库

static SQLiteDatabase openOrCreateDatabase(Filefile,SQLiteDatabase.CursorFactory
factory)

3.打开或创建(如果不存在)file文件所代表的SQLite数据库。
static SQLiteDatabase openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)

在程序中获取SQLiteDatabase对象之后,可以调用如下方法操作数据库:
1.execSQL(String sql,Object[] bindArgs):执行带有占位符的SQL语句
2.execSQL(String sql):执行SQL语句
3.insert(String table,String nullColumnHack,ContentValues values)
向指定表中插入数据
4.update(String table,ContentValues values,String whereClause,String whereArgs[])
更新指定的表中的特定数据
5.delete(String table,String whereClause,String whereArgs[]):
删除表中的特定数据
6.rawQuery(String sql,String []selectionArgs):执行带有占位符的SQL语句。
7.beginTransaction():开始事务
8.endTransaction();结束事务

Cursor同样提供了如下方法移动查询结果的记录指针。
1.move(int offset):将记录指针向上或者向下移动指定的行数
2.Boolean moveToFirst():将指针移动到第一行,如果成功返回true;
3.Boolean moveToLast():将记录指针移动到最后一行,如果移动成功就返回true
4.Boolean moveToNext():将记录指针移动到下一行
5.Boolean moveToPosition(int position):将记录指针移动到指定行
6.Boolean moveToPrevious();将记录指针移动到前一行‘
一旦记录指针移动到指定行之后,接下来可以调用cursor的getXXX()方法获取该行指定列的数据了SQLiteDatabase类似于JDBC中Connection和statement的混合体

SQLiteOpenHelper类

继承SQLiteOpenHelper开发子类,并通过该子类的getReadableDatabase(),
getWritableDatabase()方法打开数据库。

SQLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据
库的创建和版本更新,一般的用法是创建SQLiteOpenHelper的子类,并扩展
它的onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int old version,int old version)方法。

getReadableDatabase():以读写的方式打开数据库对应的SQLiteDatabase对象,该方法
先以读写的方式打开数据库,如果数据库磁盘已满,就会打开失败,打开失败以后会继续以只读的方式打开数据库

getWritableDatabase():以写的方式打开数据库对应的SQLiteDatabase对象,如果数据库磁盘已满,则该方法打开数据库就会出错。

onCreate():当第一次创建数据库是回调该方法。
onUpgrade():当数据库版本发生更新时回调该方法。

一旦得到SQLiteOpenHelper对象以后,程序无需要使用SQLiteDatabase的静态
方法常见SQLiteDatabase实例,但是可以使用getWritableDatabase()或者getReadableDatabase()方法来获取一个用于操作数据库的SQLiteDatabase实例

当第一次使用SQLiteDatabase时程序就会触发onCreate()方法,通过该方法来创建数据库;
数据库名称可以从外部传递。

在程序结束时需要关闭数据库连接,以防止造成内存泄露。

总结:

1.通过SQLiteOpenHelper的子类获取SQLiteDatabase()对象,它代表了与数据库
的连接。

2.调用SQLiteDatabase的方法来执行SQL语句

3.操作SQL语句的结果集

4.关闭SQLiteDatabase,释放资源

使用特定的方法操作SQLite方法操作数据库

1.使用insert方法插入记录
long insert(String table,String nullColumnHack,ContentValues values)
这个插入的方法的参数说明如下:
1.table:代表想要插入数据的表名
2.nullColumnHack:代表强行插入null值的数据列的列名,当values参数为
null或不包含任何key_values对时该参数有效
values:代表一行记录的数据

注意:不管第三个参数是否包含数据,执行insert()方法总会添加一条记录,如果
第三个参数为空,则会添加一条除了主键以外其他字段值都是null的记录

2.使用update方法更新记录
update(String table,ContentValues values,String whereClase,String whereArgs[])
table:代表想更新数据的表名。
values:代表想要更新的数据
whereClause:代表满足该whereClause子句的记录将会被更新
该方法返回受此update语句影响的记录的条数

想要更新user表中的所有主键大于20的人的人名

ContentValues values=new ContentValues();

values.put("name","小强");
int result =db.update("user",values,"id>?" ,intArrayof(20))

3.使用delete方法删除记录
delete(String table,String whereClause,String[] whereArgs)
table:代表想删除数据的表名
whereClause:满足该whereClause子句的记录将会被删除
whereArgs:用于为whereClause子句传入参数

4.使用query方法查询记录

Cursor query(boolean disinct,String table,String[] column,String whereClause
String [] selections String groupBy,String having,Stirng orderBy,String limit)

distinct:指定是否去除重复记录
table:指定表名
column:要查询出来的列名
whereClause:查询条件子句
selections:为条件子句中的占位符赋值
groupBy:用于控制分组,相当于select语句后groupby关键字后面的部分
orderby:用于对数据进行排序

发布了123 篇原创文章 · 获赞 74 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43927892/article/details/101680882