Android SQLite例子講解

來源:互聯網
上載者:User

這篇日誌是因為學習一位大哥的代碼產生的。當時看他的代碼,稀裡糊塗的,複製代碼調試了很久才成功。原文章見:http://blog.csdn.net/Android_Tutor/article/details/5654124

我修改之後的代碼如下:

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ><EditText     android:id="@+id/bookname"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    /><EditText     android:id="@+id/author"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    /><ListView    android:id="@+id/booklist"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    ></ListView></LinearLayout>

BOOKS_DB.java

package com.wangxin;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class BooksDB extends SQLiteOpenHelper {private final static String DATABASE_NAME = "BOOKS.db";private final static int DATABASE_VERSION = 1;public final static String TABLE_NAME = "books_table";public final static String BOOK_ID = "book_id";public final static String BOOK_NAME = "book_name";public final static String BOOK_AUTHOR = "book_author";public BooksDB(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}public BooksDB(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubString sql = "CREATE TABLE " + TABLE_NAME + "(" + BOOK_ID+ " INTEGER primary key autoincrement, " + BOOK_NAME + " text "+ BOOK_AUTHOR + "text);";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubString sql = "DROP TABLE IF EXISTS" + TABLE_NAME;db.execSQL(sql);onCreate(db);}public Cursor select() {SQLiteDatabase db = this.getReadableDatabase();Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);return cursor;}public long insert(String bookname, String author) {SQLiteDatabase db = this.getWritableDatabase();ContentValues cv = new ContentValues();cv.put(BOOK_NAME, bookname);cv.put(BOOK_AUTHOR, author);long row = db.insert(TABLE_NAME, null, cv);return row;}public void delete(int id) {SQLiteDatabase db = this.getWritableDatabase();String where = BOOK_ID + "=?";String[] whereValue = { Integer.toString(id) };db.delete(TABLE_NAME, where, whereValue);}public void update(int id, String bookname, String author) {SQLiteDatabase db = this.getWritableDatabase();String where = BOOK_ID + "=?";String[] whereValue = { Integer.toString(id) };ContentValues cv = new ContentValues();cv.put(BOOK_NAME, bookname);cv.put("BOOK_AHTHOR", author);db.update(TABLE_NAME, cv, where, whereValue);}}

SQLiteDemoActivity.java

package com.wangxin;import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;public class SQLiteDemoActivity extends Activity {/** Called when the activity is first created. */private EditText BookName = null;private EditText BookAuthor = null;private ListView BooksList = null;private BooksDB mBooksDB;private Cursor mCursor;private int BOOK_ID = 0;protected final static int MENU_ADD = Menu.FIRST;protected final static int MENU_DELETE = Menu.FIRST + 1;protected final static int MENU_UPDATE = Menu.FIRST + 2;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setUpViews();}public void setUpViews() {mBooksDB = new BooksDB(this);mCursor = mBooksDB.select();BookName = (EditText) findViewById(R.id.bookname);BookAuthor = (EditText) findViewById(R.id.author);BooksList = (ListView) findViewById(R.id.booklist);BooksList.setAdapter(new BooksListAdapter(this, mCursor));BooksList.setOnItemClickListener(new onItemClickListener());}public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(Menu.NONE, MENU_ADD, 0, "ADD");menu.add(Menu.NONE, MENU_DELETE, 0, "DELETE");menu.add(Menu.NONE, MENU_DELETE, 0, "UPDATE");return true;}public boolean onOptionsItemSelected(MenuItem item) {super.onOptionsItemSelected(item);switch (item.getItemId()) {case MENU_ADD:add();break;case MENU_DELETE:delete();break;case MENU_UPDATE:update();break;}return true;}public void add() {String bookname = BookName.getText().toString();String author = BookAuthor.getText().toString();// 書名和作者都不可為空,或者退出if (bookname.equals("") || author.equals("")) {return;}mBooksDB.insert(bookname, author);mCursor.requery();BooksList.invalidateViews();BookName.setText("");BookAuthor.setText("");Toast.makeText(this, "Add Successed!", Toast.LENGTH_SHORT).show();}public void delete() {if (BOOK_ID == 0) {return;}mBooksDB.delete(BOOK_ID);mCursor.requery();BooksList.invalidateViews();BookName.setText("");BookAuthor.setText("");Toast.makeText(this, "Delete Successed!", Toast.LENGTH_SHORT).show();}public void update() {String bookname = BookName.getText().toString();String author = BookAuthor.getText().toString();// 書名和作者都不可為空,或者退出if (bookname.equals("") || author.equals("")) {return;}mBooksDB.update(BOOK_ID, bookname, author);mCursor.requery();BooksList.invalidateViews();BookName.setText("");BookAuthor.setText("");Toast.makeText(this, "Update Successed!", Toast.LENGTH_SHORT).show();}/*public void onItemClicked(AdapterView<?> parent, View view, int position,long id) {mCursor.moveToPosition(position);BOOK_ID = mCursor.getInt(0);BookName.setText(mCursor.getString(1));BookAuthor.setText(mCursor.getString(2));}*/public class BooksListAdapter extends BaseAdapter {private Context mContext;private Cursor mCursor;public BooksListAdapter(Context context, Cursor cursor) {mContext = context;mCursor = cursor;}public int getCount() {return mCursor.getCount();}public Object getItem(int position) {return null;}public long getItemId(int position) {return 0;}public View getView(int position, View convertView, ViewGroup parent) {TextView mTextView = new TextView(mContext);mCursor.moveToPosition(position);mTextView.setText(mCursor.getString(1) + "___"+ mCursor.getString(2));return mTextView;}}class onItemClickListener implements OnItemClickListener{public void onItemClick(AdapterView<?> parent, View view, int position,long id) {// TODO Auto-generated method stubmCursor.moveToPosition(position);BOOK_ID = mCursor.getInt(0);BookName.setText(mCursor.getString(1));BookAuthor.setText(mCursor.getString(2));}}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.