Android:Sqlitedatabase学习小结
今天刚刚学习完Sqlite数据库的基础知识,随即把学到的东西记录下来,以便随后查阅,以下是自己对Sqlite数据库的小结:
1.Sqlite简介
Sqlite是一款轻型的数据库,它包含在一个相对小的C库中,它的设计目标是嵌入式的,由于它占用资源非常少,可能只需要几百K的内存就可以了,并且支持Windows/Linux/Unix等等主流的操作系统,同时可以和很多种程序语言相结合,比如:C#/Java/php等,所以在嵌入式设备中特别受欢迎,这一点也正好符合android的开发要求,所以在Android开发中经常要用到该数据库。
2.Sqlite内部结构
在内部,Sqlite有以下几个组件组成:SQL编译器、内核、后端以及附件。Sqlite通过利用虚拟机和虚拟数据库引擎,是调试、修改和扩展Sqlite的内核变得更加方便,所有SQL语句被编译成易读的、可以在Sqlite虚拟机中执行的程序集。其结构如下图:

Sqlite内部结构图
3.android中Sqlite的使用方法
在Android中要想使用Sqlite数据库,首先应该创建一个类继承SQLiteOpenHelper类,我们把这个类命名为DatabaseHelper,它作为一个访问Sqlite的助手类,提供了两方面的功能:
第一 getReadableDatabase()/getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作;
第二 提供OnCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作;
实例代码如下:
public class SQLiteActivity extends Activity { /** Called when the activity is first created. */private Button createButton;private Button insertButton;private Button updateButton;private Button updateRecordButton;private Button queryButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); createButton = (Button)findViewById(R.id.createDatabase); updateButton = (Button)findViewById(R.id.updateDatabase); insertButton = (Button)findViewById(R.id.insert); updateRecordButton = (Button)findViewById(R.id.update); queryButton = (Button)findViewById(R.id.query); createButton.setOnClickListener(new CreateListener()); updateButton.setOnClickListener(new UpdateListener()); insertButton.setOnClickListener(new InsertListener()); updateRecordButton.setOnClickListener(new UpdateRecordListener()); queryButton.setOnClickListener(new QueryListener()); } class CreateListener implements OnClickListener{@Overridepublic void onClick(View v) {//创建一个DatabaseHelper对象DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");//只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库SQLiteDatabase db = dbHelper.getReadableDatabase();} } class UpdateListener implements OnClickListener{@Overridepublic void onClick(View v) {DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);SQLiteDatabase db = dbHelper.getReadableDatabase();} } class InsertListener implements OnClickListener{@Overridepublic void onClick(View v) {//生成ContentValues对象ContentValues values = new ContentValues();//想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致values.put("id", 1);values.put("name","zhangsan");DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);SQLiteDatabase db = dbHelper.getWritableDatabase();//调用insert方法,就可以将数据插入到数据库当中db.insert("user", null, values);} } //更新操作就相当于执行SQL语句当中的update语句 //UPDATE table_name SET XXCOL=XXX WHERE XXCOL=XX... class UpdateRecordListener implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//得到一个可写的SQLiteDatabase对象DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", "zhangsanfeng");//第一个参数是要更新的表名//第二个参数是一个ContentValeus对象//第三个参数是where子句db.update("user", values, "id=?", new String[]{"1"});} } class QueryListener implements OnClickListener{@Overridepublic void onClick(View v) {System.out.println("aaa------------------");Log.d("myDebug", "myFirstDebugMsg");DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");SQLiteDatabase db = dbHelper.getReadableDatabase();Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));System.out.println("query--->" + name);}} } } 在上例中可以看出,在创建或者操作数据库前,都要通过DatabaseHelpe类中的getReadbleDatabase()和getWritbleDatabase()两个方法在创建需要的数据库,前者是创建一个只读数据库,后者是创建一个可写数据库。