日期:2014-05-16  浏览次数:20472 次

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);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		
		//执行创建数据库SQL语句
		db.execSQL(DATABASE_CREATE);
	}

	@Override
	public 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_ROW