四. 查询记录
1.使用query()查询
格式 如下
SQLiteDatabase.query (String table ,String [] columns ,String selection ,String []selectionArgs ,
String groupBy , String having ,String orderBy );
其中orderBy:ASC为升序 ,DESC为降序。
2. 使用Cursor对象
查询的结果 以一个Cursor对象返回,它好比是一个文件指针,可以很方便 的进行遍历。我们可以将它认为 是一张 表,每个记录是一行,每个属性是一列。
只能暂时保存对象 。执行完了要关闭。
常用 的方法:
Cursor.getCount( ) ;
Cursor.getColumnCount ( );
Cursor.moveToFirst( ) ,对应的有Next ,Last, isAfterLast()是否指向最后。
Cursor.close( ) ,
Cursor.requery( ),刷新。
Cursor的管理比较复杂 ,但是我们可以 用
Activity.startmanagingCursor( Cursor c)
如果 我们要遍历一个Cursor,可以用下面的方法。
要插入
3. 执行查询操作
不定
4. 使用SQLiteDatabaseBuilder
前面的都是单表查询,如果 多表,则要用SQLiteBuilder。如
如有两个表,
brief 中是name and password
detail 中是name ,coutry ,hobby and others
下面我们执行多表查询。
SELTECT user_brief.name ,
user_brief.password,
user_detail.age .
user_detail.sex
FROM user_detail, user_brief
WHERE user_brief.name =user_detail.name AND user_brief.name= "lisj"
ORDERBY age ASC
使用SQLiteDataBuilder步骤
1. 获得对象
SQLiteDataBuilder builder = new SQLiteDataBuilder ();
2.设置要查询的表,用 , 隔开
builder.setTables( TABLENAME_1 +" ,"+TABLENAME_2);
3.设定关联属性,等号连接
builder.appendWhere (TABLENAME_1+"."+NAME+"="+TABLENAME_2+"."+NAME);
4.开始查询
cursor = builder.query(SQLiteDatabase db ,String [ ] projectIn ,String selection ,String [] selectionArgs ,
String groupBy ,String having ,String sortOrder);
String [] projectionIn :要查询数据 的属性。
例子省
5. 使用数据库帮助 类
使用steps
(1) extends SQLiteOpenHelper
重写三个方法:onCreate () ,onOpen( ) ,onUpgrate( )
数据库在建立时,会调用 onCreate()类,在里面会完成 表的创建 。
与Activity不同的是,只有在数据库第一次被创建 时才会用onCreate()方法,onOpen()则是在每次都会用的。
例子:
public class DatabaseHelper extends SQLiteOpenHelper{
final static String DATABASENAME="my_database.db";
final static int VERSION = 1;
final static String TABLENAME="userInfo_detail";
final static String ID= "id";
final static String NAME="name";
final static String SEX="sex";
final static String AGE= "age";
final static String HOBBY ="hobby";
final static String PASSWORD="password";
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "CREATE TABLE "+
TABLENAME+"("+
ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
NAME+" TEXT, "+
PASSWORD+" TEXT, "+
PASSWORD+" TEXT, "+
SEX+" TEXT, "+
AGE+" TEXT, "+
HOBBY+" TEXT); ";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
2。得到帮助类的对象
用Helper的构造函数,刚上面 的例子。
DatabaseHelper helper =DatabaseHelper(Context context, String name, CursorFactory factory,int version)
里面的name是数据库和的名字。
3. 得到数据 库
在有了Helper后,我们可以很容易 就得到一个可以读or写的数据 库。
SQLiteOpenHelper.getWriteableDatabase();
SQLiteOepnHelper.getReadableDatabase ( );