当前位置:首页 > IT技术 > 移动平台 > 正文

android使用SQlite数据库存储书名和作者
2021-09-16 11:41:31

实现效果图:

 

(1)activity_main

 

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

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/bookauthor">
    </EditText>

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/booklist">
    </ListView>
</LinearLayout>

(3)MainActivity

 

public class MainActivity extends AppCompatActivity implements OnItemClickListener{

    private BookDB mBookDB;
    private Cursor mCursor;
    private EditText bookName;
    private EditText bookAuthor;
    private ListView bookList;
    private int BOOK_ID=0;

    private static final int MENU_ADD = Menu.FIRST;
    private static final int MENU_DELETE = Menu.FIRST+1;
    private static final int MENU_UPDATE = Menu.FIRST+2;



    @Override
    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_UPDATE, 0, "UPDATE");
        return true;
    }

    @Override
    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;

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.sqlite_activity);
        setUpViews();
    }
    public void setUpViews(){
        mBookDB = new BookDB(this);
        //进入这个界面 直接查询数据库
        mCursor = mBookDB.select();

        bookName = (EditText)findViewById(R.id.bookname);
        bookAuthor = (EditText)findViewById(R.id.bookauthor);
        bookList  = (ListView)findViewById(R.id.booklist);
//     System.out.println(bookName);
//     System.out.println(bookAuthor);
//     System.out.println(bookList);
        BookListAdapter adapter =  new BookListAdapter(SQLiteDatabaseDemo.this,mCursor);
        bookList.setAdapter(adapter);

        bookList.setOnItemClickListener(SQLiteDatabaseDemo.this);

    }

    //listview点击事件
    @Override
    public 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 void add(){
        //获取输入的内容
        String bookname = bookName.getText().toString();
        String author = bookAuthor.getText().toString();

        if(bookname.equals("")||author.equals("")) return;


        mBookDB.add(bookname, author);
        //Requery 方法是通过重新查询窗体或控件的数据源更新基于指定窗体的数据
        mCursor.requery();
        //对listview自动刷新
        bookList.invalidateViews();
        bookName.setText("");
        bookAuthor.setText("");
        Toast.makeText(this, "add success", Toast.LENGTH_SHORT).show();


    }
    public void delete(){
        String bookname = bookName.getText().toString();
        String author = bookAuthor.getText().toString();
        if(BOOK_ID == 0) return;
        mBookDB.delete(BOOK_ID);
        mCursor.requery();
        // //对listview自动刷新
        bookList.invalidateViews();
        bookName.setText("");
        bookAuthor.setText("");
        Toast.makeText(this, "delete success", Toast.LENGTH_SHORT).show();
    }
    public void update(){
        String bookname = bookName.getText().toString();
        String author = bookAuthor.getText().toString();
        if(bookname.equals("")||author.equals("")) return;
        mBookDB.update(BOOK_ID, bookname, author);
        mCursor.requery();
        bookList.invalidateViews();
        bookName.setText("");
        bookAuthor.setText("");
        Toast.makeText(this, "update success", Toast.LENGTH_SHORT).show();


    }
    public class BookListAdapter extends BaseAdapter{
        private Context mContext;
        private Cursor mCursor;
        public BookListAdapter(Context context,Cursor cursor){
            mContext = context;
            mCursor = cursor;
        }
        @Override
        public int getCount() {
            //数据库数据条目
            return mCursor.getCount();
        }
        @Override
        public Object getItem(int position) {

            return null;
        }
        @Override
        public long getItemId(int position) {

            return 0;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            mCursor.moveToPosition(position);
            TextView mTextView = new TextView(mContext);
            mTextView.setText("序号"+mCursor.getString(1)+"内容"+mCursor.getString(2));
            return mTextView;
        }
    }

}

(1)数据库工具类BookDB

 

public class BookDB extends SQLiteOpenHelper{
    //数据库名称
    private final static String DATABASE_NAME = "BOOKS.db";
    //数据库版本号
    private final static int DATABASSE_VERSION=1;
    //表名
    private final static String TABLE_NAME = "books_table";
    //书籍名称
    private final static String BOOK_NAME = "book_name";
    ///书籍的id
    private final static String BOOK_ID = "book_id";
    //作者
    private final static String BOOK_AUTHOR = "book_author";

    //构造方法
    public BookDB(Context context) {
        //上下文   数据库名称  工厂类  数据库的版本号
        super(context, DATABASE_NAME,null,DATABASSE_VERSION);

    }

    //第一次进来  如果没有 则创建数据库  如果有就打开
    @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, 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 add(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;

    }

    //根据id删除
    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 bookauthor){
        SQLiteDatabase db =this.getWritableDatabase();
        ContentValues cv =new ContentValues();
        cv.put(BOOK_NAME, bookname);
        cv.put(BOOK_AUTHOR, bookauthor);
        String where = BOOK_ID+"=?";
        String[] whereValue = {Integer.toString(id)};
        db.update(TABLE_NAME, cv, where, whereValue);

    }

}

 

 

 



本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >