新建一个 Android 工程,命名为 SQLiteDatabaseDemo.
创建一个新的类BooksDB.java 这个类要继承于android.database.sqlite.SQLiteOpenHelper抽象类,我们要实现其中两个方法:onCreate(),onUpdate.具体代码如下:
view plaincopy to clipboardprint?package com.android.tutor;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;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; private 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) { // TODO Auto-generated constructor stub super(context, DATABASE_NAME, null, DATABASE_VERSION); } //创建table @Override public void onCreate(SQLiteDatabase db) { String sql = 'CREATE TABLE ' + TABLE_NAME + ' (' + BOOK_ID + ' INTEGER primary key autoincrement, ' + BOOK_NAME + ' text,'+ BOOK_AUTHOR +' text);'; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion) { String 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 */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_AUTHOR, author);db.update(TABLE_NAME, cv, where, whereValue);}}package com.android.tutor;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;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; private 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) {// TODO Auto-generated constructor stub super(context, DATABASE_NAME, null, DATABASE_VERSION);}//创建table@Overridepublic void onCreate(SQLiteDatabase db) { String 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){ String 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 */ 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);www.linuxidc.com}//修改操作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_AUTHOR, author);db.update(TABLE_NAME, cv, where, whereValue);}}
修改main.xml布局如下,由两个EditText和一个ListView组成,代码如下:view plaincopy to clipboardprint?
修改SQLiteDatabaseDemo.java代码如下:view plaincopy to clipboardprint?package com.android.tutor;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.BaseAdapter;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class SQLiteDatabaseDemo extends Activity implementsAdapterView.OnItemClickListener { private BooksDB mBooksDB; private CursormCursor; private EditText BookName; private EditText BookAuthor; private ListView BooksList;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;public 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.bookslist);BooksList.setAdapter(new BooksListAdapter(this, mCursor));BooksList.setOnItemClickListener(this);}@Overridepublic 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(); } @Override public void onItemClick(AdapterView> parent, View view, intposition, 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;}@Overridepublic int getCount() { return mCursor.getCount();}@Overridepublic Object getItem(int position) { return null;}'J�sa�'+@&s'; color:rgb(0,0,0); font-size:14px; font-family:'宋体'; ' > BookName.setText(''); BookAuthor.setText(''); Toast.makeText(this, 'Delete Successed!',Toast.LENGTH_SHORT).show(); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroupparent) { TextView mTextView = new TextView(mContext); mCursor.moveToPosition(position); mTextView.setText(mCursor.getString(1) + '___' +mCursor.getString(2)); return mTextView; }}}package com.android.tutor;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.BaseAdapter;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class SQLiteDatabaseDemo extends Activity implementsAdapterView.OnItemClickListener {private BooksDB mBooksDB;private Cursor mCursor;private EditText BookName;private EditText BookAuthor;private ListView BooksList;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;public 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.bookslist);BooksList.setAdapter(new BooksListAdapter(this, mCursor));BooksList.setOnItemClickListener(this);}@Overridepublic 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;@Overridepublic void onItemClick(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;}@Overridepublic int getCount() { return mCursor.getCount();}@Overridepublic Object getItem(int position) { return null;}@Overridepublic long getItemId(int position) { return 0;}@Overridepublic 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; }}
查看我们所建的数据库。有两种方法:第一种用命令查看:adb shell lsdata/data/com.android.tutor/databases。
另一种方法是用 DDMS 查看, data/data 下面对应的应用程序的包名 下会有如在下数据库,如图所示: