AS的数据库代码创建详解

public class DBAdapter {
    private static final String DB_NAME="student.db";
    private static final String DB_TABLE="studentinfo";
    private static final int DB_VERSION=1;


    public static final String KEY_ID="_id";
    public static final String KEY_CLASS="class";
    public static final String KEY_NUM="number";
    public static final String KEY_NAME="name";


    private SQLiteDatabase db;
    private final Context context;
    private DBOpenHelper dbOpenHelper;


    public DBAdapter(Context _context){
        context=_context;
    }


    public void close(){
        if(db!=null){
            db.close();
            db=null;
        }
    }


    public void open()throws SQLiteException{
        dbOpenHelper=new DBOpenHelper(context,DB_NAME,null,DB_VERSION);
        try {
            db=dbOpenHelper.getWritableDatabase();
        }catch (SQLiteException ex){
            db=dbOpenHelper.getReadableDatabase();
        }
    }


    public long insert(Student student){
        ContentValues newValues =new ContentValues();


        newValues.put(KEY_CLASS,student.Class);
        newValues.put(KEY_NUM,student.Num);
        newValues.put(KEY_NAME,student.Name);


        return db.insert(DB_TABLE,null,newValues);
    }


    public Student[] queryAllData(){
        Cursor results=db.query(DB_TABLE,new String[]{KEY_ID,KEY_CLASS,KEY_NUM,KEY_NAME},
                null,null,null,null,null);
        return ConvertToStudent(results);
    }


    private Student[] ConvertToStudent(Cursor cursor){
        int resultCounts=cursor.getCount();
        if(resultCounts==0||!cursor.moveToFirst()){
            return null;
        }
        Student[] students=new Student[resultCounts];
        for (int i=0;i<resultCounts;i++){
            students[i]=new Student();
            students[i].ID=cursor.getInt(0);
            students[i].Class=cursor.getString(cursor.getColumnIndex(KEY_CLASS));
            students[i].Num=cursor.getString(cursor.getColumnIndex(KEY_NUM));
            students[i].Name=cursor.getString(cursor.getColumnIndex(KEY_NAME));


            cursor.moveToNext();
        }
        return students;
    }


    public long deleteOneData(long id){
        return db.delete(DB_TABLE, KEY_ID+"="+id,null);
    }


    public long deleteAllData() {
        return db.delete(DB_TABLE, null, null);
    }


    private static class DBOpenHelper extends SQLiteOpenHelper{
        public DBOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version){
            super(context,name,factory,version);
        }
        private static final String DB_CREATE="create table "+DB_TABLE+"("+KEY_ID+" integer primary key autoincrement, "
                +KEY_NAME+" text not null, "+KEY_CLASS+" text not null, "+KEY_NUM+" text not null);";
        @Override
        public void onCreate(SQLiteDatabase _db){
            _db.execSQL(DB_CREATE);
        }
        @Override
        public void onUpgrade(SQLiteDatabase _db,int _oldVersion,int _newVersion){
            _db.execSQL("DROP TABLE IF EXISTS"+DB_TABLE);
            onCreate(_db);
        }
    }
}




public class MainActivity extends AppCompatActivity {


    private DBAdapter dbAdapter;


    private EditText classText;
    private EditText numText;
    private EditText nameText;


    private ListView listView;
    public List list=new ArrayList();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        classText=(EditText)findViewById(R.id._class);
        numText=(EditText)findViewById(R.id._num);
        nameText=(EditText)findViewById(R.id._name);


        Button addBtn=(Button)findViewById(R.id._add);
        Button clearBtn=(Button)findViewById(R.id._clear);


        listView=(ListView)findViewById(R.id._list);
        this.registerForContextMenu(listView);


        dbAdapter=new DBAdapter(this);
        dbAdapter.open();


        Student[] students = dbAdapter.queryAllData();
        if (students==null){
            list.clear();
        }
        else {
            list.clear();
            for (int i = 0; i < students.length; i++) {
                list.add(students[i].Class + " " + students[i].Num + " " + students[i].Name);
            }
        }
        final ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, list);
        listView.setAdapter(adapter);


        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Student student = new Student();
                student.Class = classText.getText().toString();
                student.Num = numText.getText().toString();
                student.Name = nameText.getText().toString();
                dbAdapter.insert(student);
                Student[] students = dbAdapter.queryAllData();
                list.clear();
                for (int i = 0; i < students.length; i++) {
                    list.add(students[i].Class + " " + students[i].Num + " " + students[i].Name);
                }
                listView.setAdapter(adapter);
            }
        });


        clearBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbAdapter.deleteAllData();
                list.clear();
                listView.setAdapter(adapter);
            }
        });


        listView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                menu.add(0,0,0,"删除");
            }
        });
    }


    @Override
    public boolean onContextItemSelected(MenuItem item){
        AdapterView.AdapterContextMenuInfo info=(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
        switch (item.getItemId()){
            case 0:
                ListView listView=(ListView)findViewById(R.id._list);
                int pos=(int)listView.getAdapter().getItemId(info.position);
                Student[] students = dbAdapter.queryAllData();
                long id=students[pos].ID;
                dbAdapter.deleteOneData(id);
                students = dbAdapter.queryAllData();
                list.clear();
                for (int i = 0; i < students.length; i++) {
                    list.add(students[i].Class + " " + students[i].Num + " " + students[i].Name);
                }
                ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
                listView.setAdapter(adapter);
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }
}


public class Student {
    public int ID=-1;
    public String Name;
    public String Class;
    public String Num;


    @Override
    public String toString(){
        String result="";
        result+=this.ID+",";
        result+=this.Class+",";
        result+=this.Num+",";
        result+=this.Name+",";
        return result;
    }
}

猜你喜欢

转载自blog.csdn.net/IvoryTower152/article/details/80948220