版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
}
}