安卓開發-sqLite增刪改查
阿新 • • 發佈:2019-01-31
結構分析:
一:新建資料庫幫助類StudentHelper.class
public class StudentHelper extends SQLiteOpenHelper { public StudentHelper(Context context) { super(context, "student",null,1); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { // TODO Auto-generated method stub sqLiteDatabase.execSQL("create table students (_id integer primary key autoincrement,name varchar(30),number varchar(20),sex varchar(6))"); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } }
注意點:
1、建立類的時候注意繼承sqliteopenhelper
2、自動建立的預設建構函式中的引數只需要Context context即可
3.onCreate方法只會在第一次程式執行時執行,重複執行需要在虛擬機器中清空資料並強制停止再重新執行
二:新建資料庫DAO
public class StudentDAO {
private StudentHelper studentHelper;
public StudentDAO(Context context) {
studentHelper=new StudentHelper(context);
}
//增加操作 public void add(String name,String number,String sex) { SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase(); sqLiteDatabase.execSQL("insert into students (name,number,sex) values (?,?,?)", new Object[]{name,number,sex}); sqLiteDatabase.close(); }
//刪除操作
public void del(String name) {
SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
sqLiteDatabase.execSQL("delete from students where name=?",new Object[]{name});
sqLiteDatabase.close();
}
//更新操作 public void update(String name,String number,String sex){ SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase(); sqLiteDatabase.execSQL("update students set number =?,sex=? where name =?",new Object[]{number,sex,name}); sqLiteDatabase.close(); }
//查詢操作(判斷是否存在並返回boolean型別結果)
public boolean find(String name){
String sex="";
String number="";
SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
Cursor cursor=sqLiteDatabase.rawQuery("select number,sex from students where name=?", new String[]{name});
boolean result=cursor.moveToNext();
boolean find_result=false;
if(result){
// number=cursor.getString(0);
// sex=cursor.getString(1);
find_result=true;
}
cursor.close();
sqLiteDatabase.close();
return find_result;
}
//精確查詢(獲取到查詢結果的資訊並返回)
public String find_a(String name){
String sex="";
String number="";
SQLiteDatabase sqLiteDatabase=studentHelper.getWritableDatabase();
Cursor cursor=sqLiteDatabase.rawQuery("select number,sex from students where name=?", new String[]{name});
boolean result=cursor.moveToNext();
boolean find_result=false;
if(result){
number=cursor.getString(0);
sex=cursor.getString(1);
}
cursor.close();
sqLiteDatabase.close();
return number+","+sex;
}
}
注意點:因為操作資料庫都需要定義一個數據庫幫助類,所以將該步驟提取出來封裝成一個構造方法並預設傳入contextprivate StudentHelper studentHelper;
public StudentDAO(Context context) {
studentHelper=new StudentHelper(context);
}
三:Mainactivity呼叫DAO函式
//增加public void sadd(View view){ StudentDAO studentDAO=new StudentDAO(this); String name=et1.getText().toString().trim(); String number=et2.getText().toString().trim(); String sex=null; int id=rg.getCheckedRadioButtonId(); if(id==R.id.rb1){ sex="男"; }else {sex="女";} if(TextUtils.isEmpty(name)||TextUtils.isEmpty(number)){ Toast.makeText(this, "姓名和學號不能為空",0).show(); return; } boolean find_result=studentDAO.find(name); if(find_result){ Toast.makeText(this, name+"已存在",0).show(); return; } studentDAO.add(name, number, sex); Toast.makeText(this, "儲存成功",0).show(); }
//刪除
public void sdel(View view){
StudentDAO studentDAO=new StudentDAO(this);
String name=et1.getText().toString().trim();
boolean find_result=studentDAO.find(name);
if(TextUtils.isEmpty(name)){
Toast.makeText(this, "姓名不能為空",0).show();
return;
}
if(!find_result){
Toast.makeText(this, name+"不存在",0).show();
return;
}
studentDAO.del(name);
Toast.makeText(this, name+"已刪除",0).show();
}
//更新
public void supdate(View view){
StudentDAO studentDAO=new StudentDAO(this);
String name=et1.getText().toString().trim();
String number=et2.getText().toString().trim();
String sex=null;
int id=rg.getCheckedRadioButtonId();
boolean find_result=studentDAO.find(name);
if(id==R.id.rb1){
sex="男";
}else {
sex="女";
}
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(number)){
Toast.makeText(this, "姓名和學號不能為空",0).show();
return;
}
if(!find_result){
Toast.makeText(this, name+"不存在",0).show();
return;
}else {
studentDAO.update(name,number,sex);
}
// String find_resultString=studentDAO.find_a(name);
// String[] arryresult=find_resultString.split(",");
// String newnumber=arryresult[0].toString();
// String newsex=arryresult[1].toString();
// if(number.equals(newnumber)&sex.equals(newsex)){
// Toast.makeText(this, "更新失敗",0).show();
//
// }else{
// Toast.makeText(this,newnumber+newsex,0).show();
// }
}
//查詢
public void sfind(View view){
StudentDAO studentDAO=new StudentDAO(this);
String find_name=et1.getText().toString().trim();
String find_result=studentDAO.find_a(find_name);
if(TextUtils.isEmpty(find_name)){
Toast.makeText(this, "姓名不能為空",0).show();
return;
}
if(find_result.length()>1){
String[] resultStrings=find_result.split(",");
String newnumber=(String)resultStrings[0];
String newsex=(String)resultStrings[1];
System.out.println(newnumber);
Toast.makeText(this, "姓名:"+find_name+"\n"+"學號:"+newnumber+"\n"+"性別:"+newsex,0).show();
}else{
Toast.makeText(this, "查無此人",0).show();
}
}