import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; /** * SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。 * 一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法。 */ public class DBHelper extends SQLiteOpenHelper { private SQLiteDatabase db = null; private static final int VERSION = 1; private static final String DB_NAME = "phone.db"; private static final String TABLE_NAME = "t_phone"; private static final String CREATE_TABLE = "create table "+ TABLE_NAME +" ( " + "id integer primary key autoincrement," + "name varchar(20)," + "sex varchar(2)," + "number text, " + "description text " + ");"; /** * 在SQLiteOpenHelper子类中必须有该构造函数 * * @param context * @param name * @param factory * @param version */ public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } public DBHelper(Context context, String name, int version) { this(context, name, null, version); } public DBHelper(Context context, String name) { this(context, name, VERSION); } /** * 数据库名字和版本号都不能改变了 * * @param context */ public DBHelper(Context context) { this(context, DB_NAME); } /** * 该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabase对象的时候执行。 */ @Override public void onCreate(SQLiteDatabase db) { this.db = db; System.out.println("create database..."); // 执行sql语句 db.execSQL(CREATE_TABLE); } /** * 数据库升级:当构造函数DBHelper传递的参数version与之前的不一样时调用该函数 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println("数据库更新了!"); } /** * 插入数据 * * @param table 表名 * @param values 键值对 */ public void insert(String table, ContentValues values) { db = this.getWritableDatabase(); db.insert(table, null, values); db.close(); } /** * 查询所有 * * @param table 表名 * @return */ public Cursor query(String table) { db = this.getReadableDatabase(); Cursor cursor = null; cursor = db.query(table, null, null, null, null, null, null); return cursor; } /** * 根据唯一标识id 删除数据 * * @param id */ public void delete(String table, int id) { db = this.getWritableDatabase(); db.delete(table, "id=?", new String[] { id + "" }); db.close(); } /** * 更新数据库中的内容 * * @param table * @param values * @param whereClause * @param whereArgs */ public void update(String table, ContentValues values, String whereClause, String[] whereArgs) { db = this.getWritableDatabase(); db.update(table, values, whereClause, whereArgs); db.close(); } /** * 关闭数据库 */ public void close(){ if(null != db){ db.close(); } } }