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

Android开发--初探SQLiteDataBase/数据库的创建,更新,插入,查询

   在应用程序的开发中,我们常常会用到数据库,由于手机的内存相对于电脑来说非常小,且存储容量有限,所以一般选用SQLiteDataBase来作为储存数据的数据库。

下面的例子实现的是数据库的创建,更新,插入,查询等操作。

实现的截图如下:


1)当用户点击第一个按钮后,系统创建一个数据库,其中包含一张空的表

2)当用户点击第二个按钮后,系统根据传递的版本参数进行比较,如果新的版本号较高,则删除前一个版本号较低的数据库文件(同名则删除),并创建一个新的数据库文件

3)点击第三个按钮后,插入一条记录,并保存在表中

4)点击第四个按钮,是对表中的记录进行更新

5)这个按钮实现的功能是查询数据库中的记录,如果查询到相应的记录则给出日志文件,以供参考。

下面是具体的实现代码:

为了数据库升级的需要以及使用更方便,一般使用SQLiteOpenHelper的子类完成创建,打开数据库,以及各种对数据库的操作

public class DataBaseHelper extends SQLiteOpenHelper{
	private static final int VERSION=1;

	public DataBaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}
	/*
	 * 在这里为了操作数据库定义了两个构造函数
	 */
	public DataBaseHelper(Context context,String name)
	{
		this(context,name,VERSION);
	}
	public DataBaseHelper(Context context,String name,int version)
	{
		this(context,name,null,version);
	}
    /*
     * 数据库文件在第一次被创建时调用onCreate方法
     */
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		Log.i("Database", "create a Database");
		db.execSQL("create table user(id int,name varchar(20))");
	}
   //如果数据库文件存在,且当前的版本较高,就会调用onUpgrade方法来升级数据库,并更新版本号
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		Log.i("Database", "update a Database");
	}

}

对数据库进行操作的代码如下:

public class SQLiteActivity extends Activity {

    private Button button1;
    private Button button2;
    private Button button3;
    private Button button4;
    private Button button5;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sqlite);
        button1=(Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Log.i("Database", "create a Database");
				DataBaseHelper db=new DataBaseHelper(SQLiteActivity.this,"brucezhang_sqlite");
				db.getReadableDatabase();
			}
		});
        button2=(Button)findViewById(R.id.button2);
        button2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
			DataBaseHelper dbBaseHelper=new DataBaseHelper(SQLiteActivity.this, "BruceZhang_sqlite", 2);
			dbBaseHelper.getReadableDatabase();
			}
		});
        button3=(Button)findViewById(R.id.button3);
        button3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				/*
				 * ContentValues用于存储键值对集,由于语句db.insert("user", null, contentValues);
				 * 的第三个参数需要使用此类型
				 */
			ContentValues contentValues=new ContentValues();
			contentValues.put("id", 1);
			contentValues.put("name", "BruceZhang");
			DataBaseHelper dbHelper=new DataBaseHelper(SQLiteActivity.this, "BruceZhang_sqlite");
			SQLiteDatabase db=dbHelper.getWritableDatabase();
			db.insert("user", null, contentValues);
			}
		});
        button4=(Button)findVie