1、SQLiteOpenHelper的介紹:
A helper class to manage database creation and version management.
也就是說SQLiteOpenHelper用來管理建立一個資料庫和管理資料庫的版本。
在繼承SQLiteOpenHelper的類(extends SQLiteOpenHelper)裡面,通過複寫onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,
int, int) 和onOpen(SQLiteDatabase)(可選)來操作資料庫。
建立一個Datebase Helper類:
public class DatabaseHelper extends SQLiteOpenHelper {private static final int DATABASE_VERSION = 1;String DATABASE_CREATE = "create table user(_id INTEGER PRIMARY KEY AUTOINCREMENT,mtext varchar(8000),mtime varchar(200))";// 建構函式public DatabaseHelper(Context context, String DATABASE_NAME) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubSystem.out.println("create my idea.sql");// 可建立兩張表db.execSQL(DATABASE_CREATE);// 重要,這個只會在第一次建立資料庫時才會調用的,或者刪除了已創的資料庫才會再次調用// db.execSQL(DATABASE_CREATE1);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubSystem.out.println("update a Database");}
2、在Activity中進行對資料庫的操作:
//添加資料 public void addData() {ContentValues values = new ContentValues();// values.put("id", 1);//這裡使用了固定的構造表時的預設的_id,所以這句就可省略了values.put("mtext", "name");values.put("mtime", "idea.com");SQLiteDatabase db = dbHelper.getWritableDatabase();long rowid = db.insert("user", null, values);// 在表裡插入資料,並返回插入所在的_idSystem.out.println("-->" + rowid);// mlayout.postInvalidate();db.close();}//查詢資料public void query() {SQLiteDatabase db = dbHelper.getReadableDatabase();Cursor cursor = db.query("user", null, null, null, null, null, null);while (cursor.moveToNext()) {String mtext = cursor.getString(cursor.getColumnIndex("mtext"));String mtime = cursor.getString(cursor.getColumnIndex("mtime"));System.out.println("" + cursor.getInt(cursor.getColumnIndex("_id")));System.out.println("query--->" + mtext + " " + mtime);}db.close();}//更新資料public void updataData() {SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("mtext", "name1");values.put("mtime", "258963");db.update("user", values, "_id=?", new String[] { "4" });// 更新_id為4的資料// db.update("users", values, null, null);//更新表中所有資料db.close();}//刪除指定記錄public void deleteData() {SQLiteDatabase db = dbHelper.getReadableDatabase();// 刪除表的所有資料// db.delete("users",null,null);// 從表中刪除指定的一條資料db.execSQL("DELETE FROM " + "user" + " WHERE _id="+ Integer.toString(2));db.close();}//刪除表或者整個資料庫public void deleteTable() {SQLiteDatabase db = dbHelper.getReadableDatabase();try {// 執行SQL語句db.execSQL("drop table user"); // 刪除表} catch (SQLException e) {}this.deleteDatabase("idea.sql");// 刪除一個資料庫,只要有這個資料庫,填入資料庫名即可刪除db.close();}
3、ListView的操作
main.xml
<ListView android:paddingTop="30dp" android:id="@+id/mlistview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
listviewitem.xml
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1" android:shrinkColumns="1,2" > <TableRow> <TextView android:id="@+id/ItemText" android:text="TItemTitle" android:layout_width="320dp" android:layout_height="36dp" android:textSize="25dp" android:layout_gravity="left" android:gravity="left" android:paddingLeft="10dp" /> <TextView android:id="@+id/ItemTime" android:text="ItemTime" android:textSize="25dp" android:layout_width="260dp" android:layout_height="36dp" android:layout_gravity="right" android:gravity="left" android:paddingRight="10dp"/> </TableRow></TableLayout>
在查詢資料時添加進listview
變數聲明:
private ListView mlistview;private SimpleAdapter mlistItemAdapter;private ArrayList<HashMap<String, Object>> mlistItem = null;private DatabaseHelper dbHelper;
添加:
mlistview = (ListView) findViewById(R.id.mlistview);mlistItem = new ArrayList<HashMap<String, Object>>();dbHelper = new DatabaseHelper(NoteActivity.this, "idea.sql");SQLiteDatabase db = dbHelper.getReadableDatabase();// 以下是把所有的表都存進來,然後_id按順序排列,方便讀取資料Cursor cursor = db.query("user", null, null, null, null, null, null);while (cursor.moveToNext()) {String mtext = cursor.getString(cursor.getColumnIndex("mtext"));String mtime = cursor.getString(cursor.getColumnIndex("mtime"));HashMap<String, Object> map = new HashMap<String, Object>();map.put("mtext", mtext);map.put("mtime", mtime);mlistItem.add(map);}mlistItemAdapter = new SimpleAdapter(getApplicationContext(),mlistItem,// 資料來源R.layout.listviewitem, new String[] { "mtext", "mtime" },new int[] { R.id.ItemText, R.id.ItemTime });mlistview.setAdapter(mlistItemAdapter);db.close();// 點擊mlistview.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stub}});// 添加長按點擊mlistview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.setHeaderTitle("選擇操作");menu.add(0, 0, 0, "刪除");menu.add(0, 1, 1, "返回");}});}// 長按菜單響應函數@Overridepublic boolean onContextItemSelected(MenuItem item) {return super.onContextItemSelected(item);}