Android 学习 数据库表增加,删除,修改,查询
斯诺克爱好者网:http://www.kkyule.com淘宝精品导航 http://www.nitaomei.com
根据SQLiteDatabase,SQLiteOpenHelper,ContentValues对数据库做增,删,改,查操作的公用代码.
SQLiteDatabase:
insert(databaseHelper.DATABASE_TABLE, null, content);
第一参数:数据库表名
第二个参数如果CONTENT为空时则向表中插入一个NULL,
第三个参数为插入的内容
delete(databaseHelper.DATABASE_TABLE,KEY_ROWID +"="+rowId , null)>0;
第一参数:数据库表名,
第二个参数表示条件语句,
第三个参数为条件带?的替代值
返回值大于0表示删除成功
update(databaseHelper.DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
第一个参数:数据库表名
第二个参数更新的内容
第三个参数更新的条件
第四个参数条件带?号的替代者
数据库创建:
package us.imnet.iceskysl.db.notepad;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;/** * 创建数据库对象 * @author xuzhenqin * */public class DatabaseHelper extends SQLiteOpenHelper {//数据库名称private final static String DATABASE_NAME = "notepad";//数据库版本号private final static int DATABASE_VERSION = 1;public static final String DATABASE_TABLE = "diary";//数据表创建SQL语句private static final String DATABASE_CREATE = "create table "+DATABASE_TABLE+" (_id integer primary key autoincrement, "+ "title text not null, body text not null, created text not null);";public DatabaseHelper(Context context) {//调用父类构造方法创建数据库super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {//执行创建数据库SQL语句db.execSQL(DATABASE_CREATE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//判断数据库是否存在db.execSQL("DROP TABLE IF EXISTS diary");onCreate(db);}}
数据库增,删,改,查公共类:
package us.imnet.iceskysl.db.notepad;import java.util.Calendar;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.SQLiteException;/** * 数据库操作对象 * @author xuzhenqin * */public class DiaryDbAdapter {public static final String KEY_TITLE = "title";public static final String KEY_BODY = "body";public static final String KEY_ROWID = "_id";public static final String KEY_CREATED = "created";private DatabaseHelper databaseHelper;private Context context;private SQLiteDatabase sqliteDatabase;public DiaryDbAdapter(Context context){this.context = context;}/** * 打开数据库连接 */public void open(){databaseHelper = new DatabaseHelper(context);try{sqliteDatabase = databaseHelper.getWritableDatabase();}catch(SQLiteException ex){sqliteDatabase = databaseHelper.getReadableDatabase();}}/** * 关闭数据库连接 */public void close(){sqliteDatabase.close();}/** * 向数据库表中插入一条数据 * @param title 字段值 * @param body 字段值 */public long createDiary(String title, String body){ContentValues content = new ContentValues();content.put(KEY_TITLE, title);content.put(KEY_BODY, body);Calendar calendar = Calendar.getInstance();String created = calendar.get(Calendar.YEAR) + "年"+ calendar.get(Calendar.MONTH) + "月"+ calendar.get(Calendar.DAY_OF_MONTH) + "日"+ calendar.get(Calendar.HOUR_OF_DAY) + "时"+ calendar.get(Calendar.MINUTE) + "分";content.put(KEY_CREATED, created);//content为插入表中的一条记录,类似与HASHMAP,是以键值对形式存储。//insert方法第一参数:数据库表名,第二个参数如果CONTENT为空时则向表中插入一个NULL,第三个参数为插入的内容return sqliteDatabase.insert(databaseHelper.DATABASE_TABLE, null, content);}/** * 删除表中符合条件的记录 * @param rowId 删除条件 * @return 是否删除成功 */public boolean deleteDiary(long rowId){//delete方法第一参数:数据库表名,第二个参数表示条件语句,第三个参数为条件带?的替代值//返回值大于0表示删除成功return sqliteDatabase.delete(databaseHelper.DATABASE_TABLE,KEY_ROWID +"="+rowId , null)>0;}/** * 查询全部表记录 * @return 返回查询的全部表记录 */public Cursor getAllNotes(){//查询表中满足条件的所有记录return sqliteDatabase.query(databaseHelper.DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,KEY_BODY, KEY_CREATED }, null, null, null, null, null);}/** * 查询带条件的记录 * @param rowId 条件值 * @return 返回查询结果 * @throws SQLException 查询时异常抛出 */public Cursor getDiary(long rowId) throws SQLException {//查询表中条件值为rowId的记录Cursor mCursor =sqliteDatabase.query(true, databaseHelper.DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,KEY_BODY, KEY_CREATED }, KEY_ROWID + "=" + rowId, null, null,null, null, null);//mCursor不等于null,将标识指向第一条记录if (mCursor != null) {mCursor.moveToFirst();}return mCursor;}/** * 更新数据库 * @param rowId 行标识 * @param title 内容 * @param body 内容 * @return 是否更新成功 */public boolean updateDiary(long rowId, String title, String body) {ContentValues args = new ContentValues();args.put(KEY_TITLE, title);args.put(KEY_BODY, body);Calendar calendar = Calendar.getInstance();String created = calendar.get(Calendar.YEAR) + "年"+ calendar.get(Calendar.MONTH) + "月"+ calendar.get(Calendar.DAY_OF_MONTH) + "日"+ calendar.get(Calendar.HOUR_OF_DAY) + "时"+ calendar.get(Calendar.MINUTE) + "分";args.put(KEY_CREATED, created);//第一个参数:数据库表名,第二个参数更新的内容,第三个参数更新的条件,第四个参数条件带?号的替代者return sqliteDatabase.update(databaseHelper.DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;}}
页:
[1]