Android中SQLite数据库使用

来源:互联网 发布:网络用语菜鸟什么意思 编辑:程序博客网 时间:2024/06/04 17:53

一、数据库软件的使用

1、创建数据库【直接点击添加数据库就可以创建】

在Database File中填写你要创建的数据库名字,如果你不指定路径的话,他会默认在C:\Users\Administrator\Documents\目录下创建数据库文件,当然建议你自定义一个路径,这样方便自己管理。

2、创建表

create table Notice(noticeId integer primary key autoincrement,noticeTitle varchar(50))

这里我们创建了一个Notice的数据库,其中有两个字段,一个是 noticeId,他是自增长的主键,另一个字段是noticeTitle,创建完之后就可以看到已经有一个表了:

3、插入数据

insert into Notice(noticeTitle) values("通知")

插入的时候,制定了向哪个表的哪个字段中插入什么数据,这里表示向Notice表的noticeTitle字段中插入了"通知"这个值

4、查询

select * from Notice where noticeId>=2 and noticeId<5

这里我们将Notice表中所有的字段都查出来了,但是加了一个限制,我们查的是noticeId大于等于2并且小于5的数据。

5、删除表

很简单的一句话就可以了,drop table Notice

这里只是很简单的介绍了一下如果使用Sqlite可视化编辑器,以后有机会还会详细介绍数据库方面的知识。二、在Android中使用数据库

一般我们在Android代码中使用数据库时,我们一般会创建一个工具类,这个工具类继承自SQLiteOpenHelper,继承这个类必须要实现两个方法,一个是onCreate(创建数据库的时候会调用该方法)方法,一个是onUpgrade(数据库版本有更新的话会调用该数据库)方法

@Overridepublic void onCreate(SQLiteDatabase db) {    String sql = "CREATE TABLE " + TABLE_NAME + " (" + NOTICE_ID            + " INTEGER primary key autoincrement, " + NOTICE_TITLE + " text, "+ NOTICE_MSG +" text, " + NOTICE_TIME + " text);";    db.execSQL(sql);}

在该回调方法中我们创建了一个表格 名字叫做 TABLE_NAME,其中包含三个字段,其中NOTICE_ID是一个主键,他是整形类型,并且是自增长的;另外三个是 NOTICE_TITLE,NOTICE_MSG和NOTICE_TIME,他们是text类型的。

@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    String sql = " DROP TABLE IF EXISTS " + TABLE_NAME;    db.execSQL(sql);    onCreate(db);}

该回调方法主要是用于数据库版本升级的,数据库版本升级时,回先将就得数据库表删除(如果存在的话),然后再调用onCreate方法,创建新的数据库表。

然后就是对数据库一系列的增删改查了:

插入数据:

/** * 插入数据 * @param noticeTitle * @param noticeMsg * @param noticeTime * @return */public long insert(String noticeTitle,String noticeMsg,String noticeTime){    SQLiteDatabase db = this.getWritableDatabase();    ContentValues cv = new ContentValues();    cv.put(NOTICE_TITLE,noticeTitle);    cv.put(NOTICE_MSG,noticeMsg);    cv.put(NOTICE_TIME,noticeTime);    long row = db.insert(TABLE_NAME,null,cv);    return row;}

查询数据:

查询所有的

/** * 查询操作 * @return */public Cursor select(){    SQLiteDatabase db = this.getWritableDatabase();    Cursor cursor = db.query(TABLE_NAME,null,null,null,null,null,null);    return cursor;}

条件查询(查询NOTICEID大于startNum小于endNum的所有数据)

/** * 条件查询 * @param startNum * @param endNum * @return */public Cursor select(String startNum,String endNum){    SQLiteDatabase db = this.getWritableDatabase();    Cursor cursor = db.query(TABLE_NAME,new String[]{NOTICE_TITLE,NOTICE_MSG,NOTICE_TIME},"noticeId >= ? and noticeId < ?",            new String[]{startNum,endNum},null,null,NOTICE_ID + " DESC");    return cursor;}

在条件查询中,我们可以进去方法里面看query所要传的参数

public Cursor query(String table, String[] columns, String selection,        String[] selectionArgs, String groupBy, String having,        String orderBy) {    return query(false, table, columns, selection, selectionArgs, groupBy,            having, orderBy, null /* limit */);}

第一个table:表名

第二个columns:所要查询的列名,如果为null,则表示查询所有的字段

第三个selection:要查询的条件,这里要注意以下语法,比如我们经常的条件查询要用where,但是在这里你用where他就会报错了,相关的语法你可以去百度找一下,提供一个地址:http://www.runoob.com/sqlite/sqlite-syntax.html。

第四个selectionArgs:条件参数

第五个groupBy:分组方式即根据什么方式来进行分组

第六个having:类似于where的作用,但是它只用于goup by(统计分组中)

第七个orderBy:排序方法

注意:在查询的时候,有很多人回踩一个坑。平常我们使用sql语句的时候,比如条件查询 我们一般在sql语句前面加一个"where",order by语句的时候,在查询语句前面加一个"order by",但是在Android中的query方法中就不必要加一些这个东西了,应为他已经规定了哪一个参数是where,哪一个参数是having,哪一个参数是orderby,所以我们就不必多此一举了。


0 0