Android 之 SQLite 数据库

  当程序需要存储许多的数据的时候,或者需要把数据共享给其他应用程序的时候,我们就需要使用到数据库。

  Android采用SQLite数据库,好处很多。占用资源小,跨平台,操作方便等众多优势。

 

   下面以一个简单的数据库的读写操作来描述。

  SQLite 的数据库的结构如下:

 

 

SQLite DataBaseName 由N个TableName构成,每个Table相当于一个Excel表格,也就是说每个表格的数据由行和列组成。一般我们的一组数据,构成一行。例如通讯录的一个记录:名字,地址,邮件,电话,手机等列构成一个完成的信息,这条信息在数据库里面就是一列。

每一列都是有标识的,就像我们做的Excel一样。例如姓名:则这一列下面全部都是姓名。这样,整个数据库的结构就很简单了。

 

1:操作数据库:创建、打开

 SQLiteDatabase.openDatabase(string path,SQLiteDatabase.CursorFactory factory ,int flags).

或者

  Context.openOrCreateDatabase(String name,int mode,SQLiteDatabase.CursorFactory factory)

 

 Android还支持内存数据库。

 

2:一般的情况下,我们不支持对数据库进行创建打开操作,而是由一个继承自SQLiteOpenHelper的类来帮助我们创建或者是打开数据库

例如下面:

package com.rocky.studio.ch01; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class SQL2 extends Activity { public static final String DB_NAME="code.db"; public static final int VERSION=1; MyHelper m_Helper; SQLiteDatabase db; Button m_Button; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); m_Helper=new MyHelper(this,DB_NAME,null,VERSION); db=m_Helper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(MyHelper.COUNTRY, "China"); values.put(MyHelper.CODE, 86); db.insert(MyHelper.TB_NAME, MyHelper.ID, values); values.clear(); values.put(MyHelper.COUNTRY, "American"); values.put(MyHelper.CODE, 911); db.insert(MyHelper.TB_NAME, MyHelper.ID, values); db.insert(MyHelper.TB_NAME, MyHelper.ID, null); values.clear(); values.put(MyHelper.COUNTRY, "意大利"); values.put(MyHelper.CODE, 39); db.update(MyHelper.TB_NAME, values, MyHelper.ID + " = 3", null); db.execSQL("INSERT INTO "+MyHelper.TB_NAME+"("+MyHelper.COUNTRY+","+MyHelper.CODE+") VALUES"+"('洪都拉斯',504)"); m_Button=(Button)this.findViewById(R.id.Button01); m_Button.setOnClickListener(m_BtnClicker); } @Override protected void onDestroy() { // TODO Auto-generated method stub db.delete(MyHelper.TB_NAME, null, null); super.onDestroy(); } private OnClickListener m_BtnClicker=new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub GetValue(); } }; private void GetValue() { Cursor c; c=db.query(MyHelper.TB_NAME, null, null, null, null, null, MyHelper.CODE+" DESC"); final int codeIndex =c.getColumnIndexOrThrow(MyHelper.CODE); final int countryIndex =c.getColumnIndexOrThrow(MyHelper.COUNTRY); for(c.moveToFirst();!c.isAfterLast();c.moveToNext()) { String country =c.getString(countryIndex); int code=c.getInt(codeIndex); Toast.makeText(this, country+code, Toast.LENGTH_SHORT).show(); } } } class MyHelper extends SQLiteOpenHelper { public static final String TB_NAME="countrycod"; public static final String ID="_id"; public static final String COUNTRY="country"; public static final String CODE="code"; public MyHelper(Context context,String name,CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated method stub //Attention:注意SQL语法,每个变量后需要有空格,否则不认识。 arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_NAME+" ("+ID+" INTEGER PRIMARY KEY,"+COUNTRY+" VARCHAR,"+CODE+" INTEGR )"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS "+TB_NAME); onCreate(db); } }

 

这段代码,需要注意的就是执行SQL语句的时候需要严格注意语法。

你可能感兴趣的:(Android 之 SQLite 数据库)