Android---37---SQLiteDatabase

Android提供了SQLDatabase代表一个数据库 (底层就是一个数据库文件)


静态方法打开一个文件对应的数据库:


static SQLiteDAtabase openDatabase (String path,SQLiteDatabase.Cursor Factory factory ,int flags)


打开path文件所代表的SQL数据库。


static SQLiteDatabase openOrCreateDatabase (File file,SQLiteDatabase.Cursor Factory factory)


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


static SQLiteDatabase openOrCreateDatabase (String path,SQLiteDAtabase.Cursor Factory factory)


打开或创建(如果不存在)path所代表的SQL数据库


获取了SQLiteDatabase对象之后,就可以操作数据库,方法:


execSQL (String sql,Object[] bindArgs ):执行带占位符的SQL语句


execSQL (String sql) : 执行SQL语句


insert(String table ,String nullCOlumnHack ,ContentValues values):向执行表中插入数据


update(String table , ContentValues values ,String whereClause, String[] whereArgs):更新指定表中的特定数据


delete(Strig table ,String whereClause ,String[] whereArgs):删除指定表中的特定数据


Cursor query (String table ,String[] columns String whereClause,String[] whereArgs,String groupBy ,String having,String orderBy):
对执行数据表进行查询


Cursor query (String table ,String[] columns,String whereClause ,String[] whereArgs,String gruopBy,String having,String orderBy,String limit):
对执行数据表执行查询,limit参数控制最多查询几条记录。


Cursor query (boolean distinct,String table,String[] columns ,String whereClause,String[] whereArgs,String groupBy ,String having ,String orderBy,String limit):
对指定表执行查询语句,其中第一个参数控制是否取出重复值。


rawQuery(String sql ,String[] selectionArgs):执行带占位符的SQL查询
beginTransaction ():开始事务
endTransaction ():结束事务




Cursor提供如下方法来移动查询结果的记录指针:


move (int offset):将记录指针向上或向下移动指定的行数。offset为正数就是向下移动,为负数就是向上
boolean moveToFirst ():将记录指针移动到第一行,如果移动成功,返回true
boolean moveToLast ():将记录指针移动到最后一行,移动成功,返回true
boolean moveToNext():将记录指针移动到下一行,移动成功,返回true
boolean moveToPosition (int position): 将记录指针移动到指定的行,移动成功,返回true。
boolean moveToPrevious ():将记录指针移动到上一行,移动成功,返回true。




/************************************/
创建一个数据库:
SQLiteDatabase.openOrCreateDatabase ("/mnt/db/temp.db3",null);




打开或者创建一个数据库,如果/mn/db/  目录下的temp.db3文件存在,那么程序就是打开数据库,如果不存在就会在该目录下创建temp.db3文件。


建表语句:
String sql = "create table person (_id integer priimary key,name varchar(64),age integer)";
调用db.execSQL (sql);




插入:
insert into person(name, age) values (‘zhangsan‘ , 20);
insert into person (name,age) values (‘?,?‘); new Object[] {person.getName (), person.getAge ()};


删除:


delete from person where_id = 1;


修改:
update person set name = ‘李四‘ where name = ‘王五‘


查询:


select * from person;//查询所有 ---> 游标结果集


select * from person where name=‘zhangsan‘ //查询单个




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


插入insert :


long insert (String table ,String nullColumnHack , ContentValues values ):
table:代表想插入数据的表名
nummColumnHack:代表强行插入null值得数据列的列名。当values参数为null或不包含任何key-value对时该参数有效
values:代表一行记录的数据。
返回新加的记录的行号。


更新update:


update (String table , ContentValues values , String whereClause ,String[] whereArgs)
table:代表想更新数据的表名
values:代表想更新的数据
whereClause:满足该句的记录将会被更新
whereArgs:用于为whereClause传递参数


返回受此方法影响的记录的条数。




删除delete:
delete (String table ,String whereClause,String[] whereArgs):
该方法返回受此方法影响的记录的条数。


查询query :


Cursor query (boolean distinct, String table, String[] columns, String[] selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);


distinct:指定是否去除重复记录
table:执行查询数据的表名
columns:要查询出来的列名
selection:查询条件
selectionArgs:用于为selection传递参数
groupBy:用于控制分组
having:用于对分组进行过滤
orderBy:用于对记录进行排序
limit:用于进行分页。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。