1前言
android中使用SQLite作為數據庫,在進行相關的開發的時候不需要導入包。SQLite起符合SQL標准,也有自己的一些特性,是一個輕量級的數據庫。
2代碼
簡單的數據庫類封裝
package org.tonny.utils;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
/**
* students.db 數據庫的名字 ;null 表示使用默認的游標工廠 ;1 表示一開始的版本,建議設置為1
*/
super(context, "sutdents.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 該方法在第一次創建數據庫的時候被調用
// 因此可以在這個地方創建表之類的操作
db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 修改數據庫的版本會觸發此函數
// 在這裡可以添加新的表或者修改表的字段
}
}
模型對象
package org.tonny.utils;
public class Student {
private int id;
private String name;
public Student() {
}
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
控制邏輯
package org.tonny.utils;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class StudentService {
private DBHelper dbHelper = null;
public StudentService(Context context) {
this.dbHelper = new DBHelper(context);
}
public void insert(Student stu) {
// 內部有緩存功能,使用的是同一個句柄,如果數據庫滿了,則返回一個只讀的句柄
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 使用占位符號‘?’,防止特殊字符
db.execSQL("INSERT INTO student VALUES(?,?)",
new Object[] { stu.getId(), stu.getName() });
}
public void delete(Integer id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
db.execSQL("DELETE FROM student WHERE id = ?",
new String[] { String.valueOf(id) });
}
public void update(Student stu) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("UPDATE student SET name = ? WHERE id = ?", new String[] {
stu.getName(), String.valueOf(stu.getId()) });
}
public Student query(Integer id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = "SELECT * FROM student WHERE id = ?";
Cursor cursor = db.rawQuery(sql, new String[] { String.valueOf(id) });
if (cursor.moveToFirst()) {
int stuId = cursor.getInt(cursor.getColumnIndex("id"));
String stuName = cursor.getString(cursor.getColumnIndex("name"));
return new Student(stuId, stuName);
}
return null;
}
}
3總結
數據庫的操作都差不多,就這些吧,還有的其他功能等我回頭再完善吧。