文档章节

SQLiteDatabase 使用(2)

c
 chuiyuan
发布于 2014/04/23 23:00
字数 636
阅读 25
收藏 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
海淀
私信 提问
SQLite 在 Android 中的详细使用

声明:本文转载自:http://www.cnblogs.com/weixing/archive/2013/08/02/3232994.html 感谢 “无恨星辰”的知识积累,这对于热爱学习的人来说是一个巨大的帮助..... 1、SQLite简介 SQLite是一...

learn_more
2014/12/12
0
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...

vga
2015/09/17
173
0

没有更多内容

加载失败,请刷新页面

加载更多

探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
3分钟前
0
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
41分钟前
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0
PHP生成图片验证码

PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

DrChenXX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部