Android中SQLite数据库使用

原创
2016/11/21 15:56
阅读数 68

一、数据库软件的使用

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(数据库版本有更新的话会调用该数据库)方法

@Override
public 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类型的。

@Override
public 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 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部