Android中SQLite操作示例
?
在Android中对SQLite数据库的操作,涉及以下几个方面:
1、确认数据库文件,即.db文件;
2、通过android.database.sqlite.SQLiteDatabase类的openOrCreateDatabase()方法打开数据库;
3、数据库操作:
A、开始事务:SQLiteDatabase.beginTransaction();
B、执行sql语句;
C、结束事务:SQLiteDatabase.endTransaction();
?
具体代码可参考如下:
static boolean installDefaultSitesToDB(Context cxt) { // 确认目标数据库文件 File path = cxt.getDir("databases", Context.MODE_WORLD_WRITEABLE); path = new File(path, "db_name.db"); SQLiteDatabase db = null; try { // 打开数据库 ?db = openDB(path.getAbsolutePath()); if (db == null) { //Log.e("tag", "open db_name.db ERROR~"); return false; } db.beginTransaction();//开始事务 boolean bool = doInstallData(db);//执行sql语句,插入数据 //设置事务标志 if (bool) { db.setTransactionSuccessful();// 设置事务标志 } else { //Log.w("tag", "doInstall.DEFAULT_SITES Fail~!"); } return bool; } finally { if (db != null) { //结束事务 if (db.inTransaction()) {db.endTransaction();} db.close(); } }}private static SQLiteDatabase openDB(String file) { try { //SQLiteDatabase.openOrCreateDatabase(file, null); int flag = SQLiteDatabase.OPEN_READWRITE; flag = flag | SQLiteDatabase.CREATE_IF_NECESSARY; flag = flag | SQLiteDatabase.NO_LOCALIZED_COLLATORS; SQLiteDatabase db = SQLiteDatabase.openDatabase(file, null, flag); return db; } catch (Throwable e) { //Log.e("tag","openDatabase error:" + e.getMessage()); return null; }} //private static boolean doInstallData(SQLiteDatabase db) { try { //create table String sql = "CREATE TABLE IF NOT EXISTS Permissions (origin TEXT UNIQUE NOT NULL, allow INTEGER NOT NULL)"; db.execSQL(sql); ContentValues cv = new ContentValues(); for (String site : DEFAULT_SITES) { cv.clear(); cv.put("origin", site); cv.put("allow", 1); long ret = db.insertOrThrow("Permissions", null, cv); Log.d("tag", "db.insert.RET:" + ret); } return true; } catch (SQLException se) { String msg = "doInstall.error:[%s].%s"; Log.d("tag",String.format(msg, se.getClass(),se.getMessage())); return false; }}