SQLite的一个例子

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  
    }  
  
    @Override  
    public void onCreate(SQLiteDatabase db) {  
        // TODO Auto-generated method stub  
        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, int newVersion) {  
        // TODO Auto-generated method stub  
        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 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;  
  
    @Override  
    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.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 stub  
  
            mCursor.moveToPosition(position);  
            BOOK_ID = mCursor.getInt(0);  
            BookName.setText(mCursor.getString(1));  
            BookAuthor.setText(mCursor.getString(2));  
        }  
          
    }  
}  

 

 

 

posted @ 2012-08-09 15:07  Tammie-锴  阅读(257)  评论(1)    收藏  举报