Android 之 SQLite数据库 查询数据库
查询数据库:
两种方式--
第一种方式:类似INSERTUPDATEDELETE,有两种方法使用select从SQLite数据库检索数据。
使用rawQuery()直接调用select语句,使用query()方法构建一个查询。
小贴士:
*onCreate();该方法在数据库第一次创建的时候调用,只调用一次;
*onUpgrade();该方法在数据库版本更新的时候调用;
*T-SQL:国际标准机制
DDL:数据定义语言:createdropalter;
DCL:数据控制语言:grantrevoke;
DML:数据管理语言:insertdeleteupdateselect;
*select列的列表from表的列表where条件语句groupby分组属性having分组条件orderby排序列asc|desclimitm,n;
*游标:游标的实质使一种能从包括多条数据记录的结果集种每次提取一条记录的机制;
游标的使用,Cursor的方法:
*close();关闭游标,释放资源;
*copyStringToBuffer(intcolumnIndex,CharArrayBufferbuffer);在缓冲区中检索请求的列的文本,将其存储;
*getColumnCount();返回所有列的行数;
*getColumnIndex(StringcolumnName);返回指定的列,如果不存在那么返回-1;
*getColumnIndexOrThrow(StringcolumnName);从0开始返回指定列的名称,如果不存在将抛出异常;
*getColumnName(intcolumnIndex);从给定的索引返回列名;
*getColumnNames();返回一个字符串数组的列名;
*moveToFirst();将游标移动到第一条;
*moveToLast();将游标移动到最后一条;
*move(intoffset);将游标移动到指定ID;
*moveToNext();将游标移动到下一条;
*moveToPrevious();将游标移动到上一条;
*getCount();得到游标总记录条数;
*isFirst();判断当前游标是否为第一条数据;
案例:创建一个数据库,并在数据库第一次创建的时候初始化创建一张表student,添加记录,
然后查询数据库种表的数据,显示出来;
java代码如下:
/* 查询数据库 *//* 返回一个游标对象 */
public Cursor selectData(){
/* 与数据库获得连接,获得只读属性 */
SQLiteDatabase sqliteDatabase = dbhelper.getReadableDatabase();
/* 使用游标保存得到的结果集 *//* 参1:查询语句 ; 参2:查询条件 */
//Cursor cursor = sqliteDatabase.rawQuery("select * from student", null);
/* 使用查询语句:方式二
* @ distinct --是否去除重复行 例:值为:true/false;
* @ table --表名
* @ columns --要查询的列 例: new String[]{"id","name","age"}
* @ selection --查询条件 例:"id>?"
* @ selectionArgs --查询条件的参数 例:new String[]{"3"}
* @ groupBy --对查询的结果进行分组
* @ having --对分组的结果进行限制
* @ orderby --对查询的结果进行排序; 例:"age asc"
* @ limit --分页查询限制 ; 例:"2,5" 从第2行开始,到第5行结束;注:行数从0 开始;
* */
Cursor cursor = sqliteDatabase.query(true,"student", new String[]{"_id","name","age"}, "_id>?", new String[]{"1"}, null, null, "age desc", "1,5");
/* 使用游标---获取游标中的数据 */
while(cursor.moveToNext()){
String id = cursor.getString(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String age = cursor.getString(cursor.getColumnIndex("age"));
Toast.makeText(MainActivity.this, "_id="+id+" name="+name+" age="+age, 1000).show();
}
return cursor;
}