通过这个小例子大致了解了手机数据库的一些功能,见主类

 
  
  1. package com.android.sucre;  
  2.  
  3. import android.app.Activity;  
  4. import android.database.Cursor;  
  5. import android.database.sqlite.SQLiteCursor;  
  6. import android.os.Bundle;  
  7. import android.util.Log;  
  8. import android.view.Menu;  
  9. import android.view.MenuItem;  
  10. import android.view.View;  
  11. import android.widget.AdapterView;  
  12. import android.widget.EditText;  
  13. import android.widget.ListView;  
  14. import android.widget.SimpleCursorAdapter;  
  15. /**  
  16.  * 数据库简单应用  
  17.  * @author qiaolei  
  18.  *  
  19.  */ 
  20. public class EX05_05_SQLite extends Activity {  
  21.     private ToDoDB myToDoDB;  
  22.     private Cursor myCursor;  
  23.     private EditText myEditText;  
  24.     private ListView myListView;  
  25.     private int _id;  
  26.     protected final static int  MENU_ADD = Menu.FIRST;  
  27.     protected final static int  MENU_EDIT = Menu.FIRST + 1;  
  28.     protected final static int  MENU_DELETE = Menu.FIRST + 2;  
  29.     /** Called when the activity is first created. */ 
  30.     @Override 
  31.     public void onCreate(Bundle savedInstanceState) {  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.main);  
  34.         myEditText = (EditText)findViewById(R.id.myEditText);  
  35.         myListView = (ListView)findViewById(R.id.myListView);  
  36.         myToDoDB = new ToDoDB(this);  
  37.         myCursor = myToDoDB.select();//取得database中的数据  
  38.         //R.layout.list为layout文件夹下的list文件  
  39.         //R.id.listView指向list文件的ID  
  40.         SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list, myCursor, new String[]{ToDoDB.FIELD_TEXT}, new int[]{R.id.listView});  
  41.         myListView.setAdapter(adapter);  
  42.         myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
  43.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  44.                     long arg3) {  
  45.                 myCursor.moveToPosition(arg2);//将myCursor移到所单击的值,这个值是数据库中的行标是固定不变的  
  46.                 _id = myCursor.getInt(0);//取得第0列字段_id的值,这个值相当于数据库的主键处于自增状态,相对于整个数据库而言,这个值是实际数据库中字段的真实值  
  47.                 Log.d("arg2:_id", arg2+":"+_id);  
  48.                 myEditText.setText(myCursor.getString(1));//取得第1列字段的值  
  49.             }  
  50.         });  
  51.         myListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
  52.  
  53.             public void onItemSelected(AdapterView<?> arg0, View arg1,  
  54.                     int arg2, long arg3) {  
  55.                 SQLiteCursor sc = (SQLiteCursor)arg0.getSelectedItem();  
  56.                 _id = sc.getInt(0);  
  57.                 myEditText.setText(sc.getString(1));  
  58.             }  
  59.  
  60.             public void onNothingSelected(AdapterView<?> arg0) {  
  61.                   
  62.             }  
  63.         });  
  64.     }  
  65.     @Override 
  66.     public boolean onCreateOptionsMenu(Menu menu) {  
  67.         super.onCreateOptionsMenu(menu);  
  68.         menu.add(Menu.NONE, MENU_ADD, 0, R.string.create);  
  69.         menu.add(Menu.NONE, MENU_EDIT, 0, R.string.edit);  
  70.         menu.add(Menu.NONE, MENU_DELETE, 0, R.string.delete);  
  71.         return true;  
  72.     }  
  73.     @Override 
  74.     public boolean onOptionsItemSelected(MenuItem item) {  
  75.         super.onOptionsItemSelected(item);  
  76.         switch (item.getItemId()) {  
  77.         case MENU_ADD:  
  78.             this.addToDo();  
  79.             break;  
  80.         case MENU_EDIT:  
  81.             this.editToDo();  
  82.             break;  
  83.         case MENU_DELETE:  
  84.             this.deleteToDo();  
  85.             break;  
  86.         }  
  87.         return true;  
  88.     }  
  89.     private void addToDo(){  
  90.         if(!"".equals(myEditText.getText().toString())){  
  91.             myToDoDB.insert(myEditText.getText().toString());  
  92.             myCursor.requery();  
  93.             myListView.invalidateViews();  
  94.             myEditText.setText("");  
  95.             _id = 0;  
  96.         }  
  97.     }  
  98.     private void editToDo(){  
  99.         if(!"".equals(myEditText.getText().toString())){  
  100.             myToDoDB.update(_id, myEditText.getText().toString());  
  101.             myCursor.requery();//更新游标  
  102.             myListView.invalidateViews();//更新ListView内容  
  103.             myEditText.setText("");  
  104.             _id = 0;  
  105.         }  
  106.     }  
  107.     private void deleteToDo(){  
  108.         if(_id!=0){  
  109.             myToDoDB.delete(_id);  
  110.             myCursor.requery();  
  111.             myListView.invalidateViews();  
  112.             myEditText.setText("");  
  113.             _id = 0;  
  114.         }  
  115.     }  

 

 
  
  1. package com.android.sucre;  
  2.  
  3. import android.content.ContentValues;  
  4. import android.content.Context;  
  5. import android.database.Cursor;  
  6. import android.database.sqlite.SQLiteDatabase;  
  7. import android.database.sqlite.SQLiteDatabase.CursorFactory;  
  8. import android.database.sqlite.SQLiteOpenHelper;  
  9. /**  
  10.  * 创建数据库  
  11.  * @author qiaolei  
  12.  *  
  13.  */ 
  14. public class ToDoDB extends SQLiteOpenHelper{  
  15.     private final static String DATABASE_NAME= "todo_db";  
  16.     private final static int DATABASE_VERSION = 1;  
  17.     private final static String TABLE_NAME = "todo_table";  
  18.     public final static String FIELD_id = "_id";  
  19.     public final static String FIELD_TEXT = "todo_text";  
  20.     public ToDoDB(Context context) {  
  21.         super(context, DATABASE_NAME, null, DATABASE_VERSION);  
  22.     }  
  23.  
  24.     @Override 
  25.     public void onCreate(SQLiteDatabase db) {  
  26.         //创建的表有两列,FIELD_ID为主键自动增长  
  27.         String sql = "create table "+TABLE_NAME+" ("+FIELD_id+" integer primary key autoincrement,"+FIELD_TEXT+" text)";  
  28.         db.execSQL(sql);  
  29.     }  
  30.  
  31.     @Override 
  32.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  33.         String sql = "drop table if exists "+TABLE_NAME+"";  
  34.         db.execSQL(sql);  
  35.         onCreate(db);  
  36.     }  
  37.     public Cursor select(){  
  38.         SQLiteDatabase db = this.getReadableDatabase();  
  39.         Cursor cursor = db.query(TABLE_NAME, nullnullnullnullnullnull);  
  40.         return cursor;  
  41.     }  
  42.     public long insert(String text){  
  43.         SQLiteDatabase db = this.getReadableDatabase();  
  44.           
  45.         ContentValues cv = new ContentValues();  
  46.         cv.put(FIELD_TEXT, text);  
  47.         long row = db.insert(TABLE_NAME, null, cv);  
  48.         return row;  
  49.     }  
  50.     public void delete(int id){  
  51.         SQLiteDatabase db = this.getReadableDatabase();  
  52.         String where = FIELD_id + "=?";  
  53.         String[] whereValue = {Integer.toString(id)};  
  54.         db.delete(TABLE_NAME, where, whereValue);  
  55.     }  
  56.     public void update(int id,String text){  
  57.         SQLiteDatabase db = this.getReadableDatabase();  
  58.         String where = FIELD_id + "=?";  
  59.         String[] whereValue = {Integer.toString(id)};  
  60.         ContentValues cv = new ContentValues();  
  61.         cv.put(FIELD_TEXT, text);  
  62.         db.update(TABLE_NAME, cv, where, whereValue);  
  63.     }  
  64. }  

其它配置文件见附件