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 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; } }
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); } } }