文档章节

SQLiteDatabase 使用(2)

c
 chuiyuan
发布于 2014/04/23 23:00
字数 636
阅读 26
收藏 1

四. 查询记录

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











© 著作权归作者所有

共有 人打赏支持
上一篇: 使用ContentProvider
下一篇: 使用SQLite(1)
c
粉丝 9
博文 92
码字总数 40993
作品 0
海淀
私信 提问
Android操作SQLite数据库

SQLite特点 1.Android平台中嵌入了一个关系型数据库SQLite,和其他数据库不同的是SQLite存储数据时不区分类型 例如一个字段声明为Integer类型,我们也可以将一个字符串存入,一个字段声明为布...

wangwenya
2013/07/19
0
0
android sqlite 介绍

Android 中SQlite操作 一 Sqlite的特点: 1 轻量级的 进程内的数据库引擎,不存在数据库的客户端和服务器,非常小 2 不需要安装 Sqlite的核心引擎不需要依赖第三方软件,不需要安装 3 跨平台...

小克898
2012/11/11
0
0
Android开发_SQLite使用方法技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangty0223/article/details/9407509 SQLite介绍 SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPh...

张腾元_Ternence
2013/07/22
0
0
Android开发SQLite的使用

在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面。本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的。 一.SQ...

Erichkko
2015/08/28
0
0
android SQLite使用SQLiteOpenHelper类对数据库进行操作

一、 SQLite介绍 SQLite是android内置的一个很小的关系型数据库。 SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。 博客中有一篇有稍微详细一点的介绍,大家可以去看...

hosealee
2013/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

给windows server中的“未识别的网络”或“无法识别的网络”设置网络位置类型

在windows server中,如果网络没有被正确的识别,那么就需要手工设置一下网络位置类型。 将“公用网络”指定设置为“专用网络“ 【控制面板】--【系统和安全】--【管理工具】--【本地安全策略...

gugudu
今天
1
0
阿里强制要求的21条Java开发规范,可以避免很多坑

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject...

天王盖地虎626
今天
8
0
oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110

查看trace 文件: MRP0: Background Managed Standby Recovery process started (amls) started logmerger process Sun Jan 20 07:55:53 2019 Managed Standby Recovery starting Real Time ......

hnairdb
今天
2
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linux-tao
今天
3
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxprobe16
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部