Android應用開發—SQLiteOpenHelper管理SQLite資料庫、ListView

來源:互聯網
上載者:User

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);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.