package dump.y; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class SQLManager extends SQLiteOpenHelper implements IDatabase { private static final String DEG_TAG = "webBrowser_SQLManager"; public SQLManager(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { //创建表 db.execSQL(SQLStr.CREATE_TABLE_FAVORITES); db.execSQL(SQLStr.CREATE_TABLE_HISTORY); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } @Override public boolean add(SQLiteDatabase sqLiteDatabase, String tableName, String name, String url, long date) throws SQLException { ContentValues values = new ContentValues(); values.put("name", name); values.put("url", url); if (tableName.equals(FavAndHisManager.TABEL_NAME_Favorite)) { //Log.d(DEG_TAG, "name:" + name + ",url:" + url); } else { values.put("date", date); //Log.d(DEG_TAG, "name:" + name + ",url:" + url + ",date:" + date); } long id = sqLiteDatabase.insert(tableName, null, values); if (id != -1) { return true; } else { return false; } } @Override public boolean delete(SQLiteDatabase sqLiteDatabase, String tableName, String id) { //Log.d(DEG_TAG, "deleteId:" + id); int number = sqLiteDatabase.delete(tableName, "id=?", new String[]{id}); //Log.d(DEG_TAG, "delete_result:" + number); if (number != 0) { return true; } else { return false; } } @Override public boolean deleteAll(SQLiteDatabase sqLiteDatabase, String tableName) { //Log.d(DEG_TAG, "deleteAll"); int number = sqLiteDatabase.delete(tableName, null, null); //Log.d(DEG_TAG, "deleteAll_result:" + number); if (number != 0) { return true; } else { return false; } } @Override public boolean modify(SQLiteDatabase sqLiteDatabase, String tableName, String id, String name, String url) { ContentValues values = new ContentValues(); values.put("name", name); values.put("url", url); //Log.d(DEG_TAG, "id:" + id + ",name:" + name + ",url:" + url); int number = sqLiteDatabase.update(tableName, values, "id=?", new String[]{id}); //Log.d(DEG_TAG, "number:" + number); if (number != 0) { return true; } else { return false; } } @Override public Cursor getAll(SQLiteDatabase sqLiteDatabase, String tableName) { String[] returnColmuns = null; if (tableName.equals(FavAndHisManager.TABEL_NAME_Favorite)) { returnColmuns = new String[]{ "id as _id", "name", "url" }; } else { returnColmuns = new String[]{ "id as _id", "name", "url", "date" }; } Cursor result = sqLiteDatabase.query(tableName, returnColmuns, null, null, null, null, null); while (result.moveToNext()) { String id = String.valueOf(result.getInt(result.getColumnIndex("_id"))); String name = result.getString(result.getColumnIndex("name")); String url = result.getString(result.getColumnIndex("url")); if (tableName.equals(FavAndHisManager.TABEL_NAME_Favorite)) { //Log.d(DEG_TAG, "id:" + id + ",name:" + name + ",url:" + url); } else { String date = String.valueOf(result.getLong(result.getColumnIndex("date"))); //Log.d(DEG_TAG, "id:" + id + ",name:" + name + ",url:" + url + ",date:" + date); } } return result; } @Override public boolean multiply(SQLiteDatabase sqLiteDatabase, String tableName, String url) { Cursor result = sqLiteDatabase.query(tableName, null, "url=?", new String[]{url}, null, null, null); while (result.moveToNext()) { //Log.d(DEG_TAG, "multiply:[id:" + String.valueOf(result.getInt(result.getColumnIndex("id"))+ ",name:" + result.getString(result.getColumnIndex("name"))+ ",url:" + result.getString(result.getColumnIndex("url")))); } if (result.getCount() > 0) { result.close(); return true; } else { result.close(); return false; } } @Override public void transactionAround(boolean readOnly, CallBack callback) { SQLiteDatabase sqLiteDatabase = null; if (readOnly) { sqLiteDatabase = this.getReadableDatabase(); } else { sqLiteDatabase = this.getWritableDatabase(); } sqLiteDatabase.beginTransaction(); callback.doSomething(sqLiteDatabase); sqLiteDatabase.setTransactionSuccessful(); sqLiteDatabase.endTransaction(); } }