结构分析:
一:新建数据库帮助类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;
}
}
注意点:因为操作数据库都需要定义一个数据库帮助类,所以将该步骤提取出来封装成一个构造方法并默认传入context
private 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();
}
}