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