Android SQLite应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chennai1101/article/details/82109393

相关文章
Android 文件操作
Android SQLite应用
Android Xml文件操作
Android SharedPreferences应用
Android Json应用

1. SQLiteOpenHelper类

安卓提供了SQLiteDatabase类来管理SQLIte,并提供了帮助类SQLiteOpenHelper,调用getReadableDatabase()getWritableDatabase()来获取数据库。这两种都会调用getDatabaseLocked()方法。

final int version = db.getVersion();
if (version != mNewVersion) {
    db.beginTransaction();
    try {
        if (version == 0) {
            onCreate(db);
        } else {
            if (version > mNewVersion) {
                onDowngrade(db, version, mNewVersion);
            } else {
                onUpgrade(db, version, mNewVersion);
            }
        }
        db.setVersion(mNewVersion);
        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }
}

getDatabaseLocked()方法里,初次调用version为0,调用onCreate()方法创建数据库。而如果版本升级调用onUpgrade()方法。

2. 自定义PeopleSQLiteOpenHelper

在构造函数内,指定数据库名称和版本。

public class PeopleSQLiteOpenHelper extends SQLiteOpenHelper {
    public final static String LOGTAG = "PeopleSQLiteOpenHelper";

    public final static String DB_NAME = "people.db";
    public final static String TABLE_NAME = "people";
    public final static int VERSION = 1;

    public final static String COL_ID   = "_id";
    public final static String COL_NAME = "name";
    public final static String COL_ADDR = "addr";
    public final static String COL_AGE  = "age";

    public final static String TABLE_CREATE =
			"create table if not exists " + TABLE_NAME + "("
						+ COL_ID + " integer primary key autoincrement not null,"
						+ COL_NAME + " text not null, "
						+ COL_ADDR + " text not null, "
						+ COL_AGE + " integer "
						+ ")";

    public PeopleSQLiteOpenHelper(Context context) {
        super(context, DB_NAME, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(TABLE_CREATE);
    }

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

}

3. SQLiteDatabase类

SQLiteDatabase类可以用来操作数据库。

(1) 打开数据库
调用SQLiteOpenHelper的getWritableDatabase()getReadableDatabse()方法。
也可以直接使用SQLiteDatabase的openDatabase()或者openOrCreateDatabse()方法打开外部数据库。

(2) 数据库操作

public List<People> query() {
    List<People> list = new ArrayList<>();

    Cursor cursor = getReadableDatabase().query(TABLE_NAME,
            null, null, null, null, null, null);
    while (cursor.moveToNext()) {
        People people = new People();
        people.id = cursor.getInt(cursor.getColumnIndex(COL_ID));
        people.name = cursor.getString(cursor.getColumnIndex(COL_NAME));
        people.addr = cursor.getString(cursor.getColumnIndex(COL_ADDR));
        people.age = cursor.getInt(cursor.getColumnIndex(COL_AGE));
        list.add(people);
    }
    cursor.close();
    return list;
}

public void add(String name, String addr, int age) {
    ContentValues values = new ContentValues();
    values.put(COL_NAME, name);
    values.put(COL_ADDR, addr);
    values.put(COL_AGE, age);

    SQLiteDatabase db = getWritableDatabase();
    try {
        db.beginTransaction();
        db.insert(TABLE_NAME, null, values);

        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }
}

public void delete(int id) {
    SQLiteDatabase db = getWritableDatabase();

    try {
        db.beginTransaction();
        db.delete(TABLE_NAME, COL_ID + "=?", new String[]{Integer.toString(id)});
        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }

}

public void modify(int id, String name, String addr, int age) {
    ContentValues values = new ContentValues();
    values.put(COL_NAME, name);
    values.put(COL_ADDR, addr);
    values.put(COL_AGE, age);

    SQLiteDatabase db = getWritableDatabase();
    try {
        db.beginTransaction();
        db.update(TABLE_NAME, values, COL_ID + "=" + id, null);

        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }
}

4. SQLIte工具SQLite Expert

下载地址http://www.sqliteexpert.com/download.html
这里写图片描述

猜你喜欢

转载自blog.csdn.net/chennai1101/article/details/82109393
今日推荐