zoukankan      html  css  js  c++  java
  • Android · SQLite

    package com.manhua.sqlitetest;
    
    import android.app.Activity;
    import android.content.Context;
    import android.database.Cursor;
    import android.os.AsyncTask;
    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 MainActivity extends Activity implements
            AdapterView.OnItemClickListener {
        private DatabaseHelper mDB;
        private Cursor mCursor;
        private EditText edit_Name;
        private EditText edit_Info;
        private ListView lv;
        private ListAdapter adapter = null;
    
        private int 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.activity_main);
            
            mDB = new DatabaseHelper(this);
            mCursor = mDB.select();
    
            edit_Name = (EditText) findViewById(R.id.editText1);
            edit_Info = (EditText) findViewById(R.id.editText2);
            lv = (ListView) findViewById(R.id.listView1);
    
            adapter = new ListAdapter(this, mCursor);
            lv.setAdapter(adapter);
            lv.setOnItemClickListener(this);
        }
    
        @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;
        }
    
        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 name = edit_Name.getText().toString();
            String info = edit_Info.getText().toString();
            
            if (name.equals("") || info.equals("")) {
                return;
            }
            mDB.insert(name, info);
    //        mCursor.requery();
            new RefreshList().execute();
            edit_Name.setText("");
            edit_Info.setText("");
            Toast.makeText(this, "Add Successed!", Toast.LENGTH_SHORT).show();
        }
    
        public void delete() {
            if (ID == 0) {
                return;
            }
            mDB.delete(ID);
    //        mCursor.requery();
            new RefreshList().execute();
            edit_Name.setText("");
            edit_Info.setText("");
            Toast.makeText(this, "Delete Successed!", Toast.LENGTH_SHORT).show();
        }
    
        public void update() {
            String name = edit_Name.getText().toString();
            String info = edit_Info.getText().toString();
            // 书名和作者都不能为空,或者退出
            if (name.equals("") || info.equals("")) {
                return;
            }
            mDB.update(ID, name, info);
    //        mCursor.requery();
            new RefreshList().execute();
            edit_Name.setText("");
            edit_Info.setText("");
            Toast.makeText(this, "Update Successed!", Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
    
            mCursor.moveToPosition(position);
            ID = mCursor.getInt(0);
            edit_Name.setText(mCursor.getString(1));
            edit_Info.setText(mCursor.getString(2));
    
        }
    
        public class ListAdapter extends BaseAdapter {
            private Context mContext;
            private Cursor mCursor;
    
            public ListAdapter(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) {
                TextView mTextView = new TextView(mContext);
                mCursor.moveToPosition(position);
                mTextView.setText(mCursor.getString(1) + "___"
                        + mCursor.getString(2));
                return mTextView;
            }
    
        }
        
        //步骤1:通过后台线程AsyncTask来读取数据库,放入更换Cursor
        private class RefreshList extends AsyncTask<Void, Void ,Cursor>{
            //步骤1.1:在后台线程中从数据库读取,返回新的游标newCursor
            protected Cursor doInBackground(Void... params) {
                Cursor newCursor =  mDB.select();
                return newCursor;
            }
            //步骤1.2:线程最后执行步骤,更换adapter的游标,并奖原游标关闭,释放资源  
            protected void onPostExecute(Cursor newCursor) {
                adapter.mCursor=newCursor;
                mCursor.close();
                mCursor = newCursor;
                lv.invalidateViews();
            }         
        }
    }
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.manhua.sqlitetest.MainActivity" >
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:ems="10"
            android:hint="name" />
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="62dp"
            android:ems="10"
            android:hint="phone" />
    
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/editText2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="14dp" >
        </ListView>
    
    </RelativeLayout>
    package com.manhua.sqlitetest;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    // http://www.ibm.com/developerworks/cn/opensource/os-cn-sqlite/index.html
    
    public class DatabaseHelper extends SQLiteOpenHelper {
        private final static String DATABASE_NAME = "test.db";
        private final static int DATABASE_VERSION = 1;
        private final static String TABLE_NAME = "Friends";
        public final static String ID = "id";
        public final static String NAME = "name";
        public final static String INFO = "info";
    
        public DatabaseHelper(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 + " (" + ID
                    + " INTEGER primary key autoincrement, " + NAME
                    + " text, " + INFO + " 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 insert(String name, String info) {
            SQLiteDatabase db = this.getWritableDatabase();
            /* ContentValues */
            ContentValues cv = new ContentValues();
            cv.put(NAME, name);
            cv.put(INFO, info);
            long row = db.insert(TABLE_NAME, null, cv);
            return row;
        }
    
        // 删除操作
        public void delete(int id) {
            SQLiteDatabase db = this.getWritableDatabase();
            String where = ID + " = ?";
            String[] whereValue = { Integer.toString(id) };
            db.delete(TABLE_NAME, where, whereValue);
        }
    
        // 修改操作
        public void update(int id, String name, String info) {
            SQLiteDatabase db = this.getWritableDatabase();
            String where = ID + " = ?";
            String[] whereValue = { Integer.toString(id) };
    
            ContentValues cv = new ContentValues();
            cv.put(NAME, name);
            cv.put(INFO, info);
            db.update(TABLE_NAME, cv, where, whereValue);
        }
    }
  • 相关阅读:
    SharePoint
    北京的雨
    SharePoint2003安装问题解答
    SharePoint安装时“Service Unavailable”的解决办法
    SharePoint安装程序常见问题解答和故障排查指南,做个参考:)
    银弹的看法
    vue组件注册方式
    vue中template和render的区别
    前端需要注意的SEO
    公众号中H5页面分享给好友或朋友圈自定义图片或文字
  • 原文地址:https://www.cnblogs.com/manhua/p/4169574.html
Copyright © 2011-2022 走看看