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);
        }
    }
  • 相关阅读:
    iOS resign code with App Store profile and post to AppStore
    HTTPS科普扫盲帖 对称加密 非对称加密
    appid 评价
    使用Carthage安装第三方Swift库
    AngularJS:何时应该使用Directive、Controller、Service?
    xcode7 The operation couldn't be completed.
    cocoapods pod install 安装报错 is not used in any concrete target
    xcode7 NSAppTransportSecurity
    learning uboot how to set ddr parameter in qca4531 cpu
    learning uboot enable protect console
  • 原文地址:https://www.cnblogs.com/manhua/p/4169574.html
Copyright © 2011-2022 走看看