SQLiteDatabase 使用(2)

四. 查询记录

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 ( );











转载于:https://my.oschina.net/chuiyuan/blog/225802

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值