27
2017
09

安卓学习笔记(5)-SQLite的使用

​ Android 提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问自己所创建的任何数据库。

​ 创建新 SQLite 数据库的推荐方法是创建 SQLiteOpenHelper 的子类并覆盖 onCreate() 方法,在此方法中,可以执行 SQLite 命令以创建数据库中的表。

Db.java

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Db extends SQLiteOpenHelper {

    public Db(Context context) {
         //第二个参数是数据库的名称,第四个参数是数据库的版本
        super(context, "db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
      //创建一个表名称为“user”,这个表里有两列数据name和score
      db.execSQL("CREATE TABLE user("
                 + "_id INTEGER PRIMARY KEY AUTOINCREMENT,"//这个参数必须要
                 + "name TEXT DEFAULT \"\"," 
                 + "score INTEGER \"\",");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}

关于”_id INTEGER PRIMARY KEY AUTOINCREMENT,”安卓官方是这么说的:

Android 没有实施标准 SQLite 概念之外的任何限制。我们推荐包含一个可用作唯一 ID 的自动增量值关键字段,以便快速查找记录。 私有数据不要求这样做,但如果您实现了一个内容提供程序,则必须包含使用 BaseColumns._ID 常量的唯一 ID。

以此作为数据库的一个基类,可以通过用 getWritableDatabase()getReadableDatabase()进行数据库的读写操作。

private Db db;
private SQLiteDatabase dbwrite;
private ContentValues cv;
private Cursor cursor = null;

db = new Db(MainActivity.this);
dbRead = db.getReadableDatabase(); //读操作
dbwrite = db.getWritableDatabase();//写操作

//写操作
cv = new ContentValues();//初始化一个ContentValues,方便对每类数据进行操作
cv.put("name", "Tom");   //将name这一类数据设为Tom
cv.put("score", 100);    //设置score为100
dbwrite.insert("user", null, cv);  //把数据插入user表
dbwrite.close();                   //写操作完成之后一定要close

//读操作

//关于查询数据库,就是query函数的功能,这里就不赘述了
cursor = dbRead.query("user", null, null, null, null, null, "score desc"); //按score降序排列读出
//再将数据从cursor中取出来就行
while (cursor.moveToNext()) {
  System.out.println(cursor.getString(cursor.getColumnIndex("name"))
                   + cursor.getString(cursor.getColumnIndex("score"));
}

//删除数据
bwrite.delete("user", "score=?",new String[] {"99","100"}); //删除表user中score等于99和100的数据
bwrite.delete("user", "name=?",new String[] {"Tom"});       //删除表user中name为Tom的数据 

//关于查询数据库,就是query函数的功能,这里就不赘述了

上一篇:AWS快速使用 下一篇:安卓学习笔记(6)-控制ListView显示列表的数量