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

Android SQLite数据库创建和使用实战(一)

废话不多说,Android撑死算个入门选手,刚好有点时间,随之倒腾整理下Android数据库操作。码农只需要代码和原理,理论从代码中自己感悟。小二,上代码,弄。

功能基本包含了数据库基本功能,至于运行后人机操作界面只是随便写了个布局方便测试而已。

com/jesse/dbasetest1/DbAdapter.java(用来管理数据库,简单的例子嘛,规范啥的就免了,重在说理)。

package com.jesse.dbasetest1;

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;
import android.util.Log;
/**
 * @author Jesse
 * just for myself learn android SQLite.
 */
public class DbAdapter {
	public static final String TAG = DbAdapter.class.getSimpleName();
	private Context mContext;
	
	public static final String KEY_ID = "_id";
	public static final String KEY_NAME = "name";
	public static final String KEY_AGE = "age";
	public static final String KEY_SEX = "sex";

	public static final String DBASE_NAME = "persons";
	public static final String DBASE_TABLE = "base_info_table";
	public static final int DBASE_VERSION = 1;
	
	public static final String DBASE_CREATE = "create table base_info_table "
											+ "(_id integer primary key autoincrement, "
											+ "name text not null, "
											+ "age text not null, "
											+ "sex text not null);";
	
	private DataBaseHelper mBaseHelper;
	private SQLiteDatabase mDb;
	
	public DbAdapter(Context context)
	{
		this.mContext = context;
		mBaseHelper = new DataBaseHelper(mContext, DBASE_NAME, null, DBASE_VERSION);
	}
	
	public DbAdapter openDbase()
	{
		mDb = mBaseHelper.getWritableDatabase();
		return this;
	}
	
	public void closeDbase()
	{
		mBaseHelper.close();
	}
	
	public long insertPersonInfo(PersonInfo person)
	{
		ContentValues initialValues = new ContentValues();
		
		initialValues.put(KEY_NAME, person.name);
		initialValues.put(KEY_AGE, person.age);
		initialValues.put(KEY_SEX, person.sex);
		
		return mDb.insert(DBASE_TABLE, null, initialValues);
	}
	
	public boolean deletePersonInfo(long rowId)
	{
		return (mDb.delete(DBASE_TABLE, KEY_ID + "=" + rowId, null) > 0);
	}
	
	public Cursor getAllPersonInfo()
	{
		return mDb.query(DBASE_TABLE, new String[]{KEY_ID,
													KEY_NAME,
													KEY_AGE,
													KEY_SEX}, 
													null, null, null, null, null);
	}
	
	public Cursor getPersonInfo(long rowId)
	{
		Cursor mCursor = mDb.query(DBASE_TABLE, new String[]{KEY_ID,
													KEY_NAME,
													KEY_AGE,
													KEY_SEX}, 
													KEY_ID + "=" + rowId,
													null, null, null, null);
		if (null != mCursor)
		{
			mCursor.moveToFirst();
		}
		
		return mCursor;
	}
	
	public boolean updatePersonInfo(long rowId, PersonInfo person)
	{
		ContentValues initialValues = new ContentValues();
		
		initialValues.put(KEY_NAME, person.name);
		initialValues.put(KEY_AGE, person.age);
		initialValues.put(KEY_SEX, person.sex);
		
		return (mDb.update(DBASE_TABLE, initialValues, KEY_ID + "=" + rowId, null) > 0);
	}
	//-----------------------------------------------------------------
	private class DataBaseHelper extends SQLiteOpenHelper{

		public DataBaseHelper(Context context, String name,
				CursorFactory factory, int version) 
		{
			super(context, name, factory, version);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			db.execSQL(DBASE_CREATE);
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub
			Log.w(TAG, "Upgrading database from version "