SQL保存和删除数据
标签(空格分隔): Android
-任务要求
1 将学生信息存入数据库
2 显示所有学生信息列表
3 删除数据库表中第一条信息。
如图所示:

思路:
- 实现显示学生信息的功能
首先要创建数据库 将数据存入数据库表中,通过适配器将后端数据导入页面显示在ListView上
-删除数据库表中的第一条数据
删除的话通过数据库语句delete语句实现 用cursor来定位第一条数据来实现删除
XMl布局:
main_activity
<EditText
android:id="@+id/edt_cont"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_weight="1"
android:id="@+id/btn_add"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/add"/>
<Button
android:layout_weight="1"
android:id="@+id/btn_del"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/del"/>
</LinearLayout>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
item
<TextView
android:id="@+id/txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
在数据库创建部分需要一个SQLiteOpenHelper打开SQLite并创建表,所以我自定义了一个MyDBHelper类继承它
-MyDBHelper类
public class MyDBHelper extends SQLiteOpenHelper {
private static final String name = "count";
private static final int version = 1;
private String sql = "create table person(_id int autoincrement primary key ," +
"name varchar(30) not null)";
public MyDBHelper(Context context) {
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists person");
onCreate(db);
}
}
同时需要一个类对表进行增删该查,这些操作要在具体的实例上也就表的行或者列进行 因此还需要一个类来表示表的行或者列。这里我是对行进行增删改查
- PersonDAO类(对表进行增删该查操作)
public class PersonDAO {
private SQLiteDatabase db;
private MyDBHelper helper;
public PersonDAO(Context context) {helper = new MyDBHelper(context);}
public void insert(Person person) {
db = helper.getWritableDatabase();
String sql = "insert into person(name)"+ "values(?)";
db.execSQL(sql,new Object[]{person.getName()});
}
public void delete(int id) {
db = helper.getWritableDatabase();
String sql = "delete from person where _id =?";
db.execSQL(sql,new Object[]{id});
}
public Cursor selectAll() {
db = helper.getReadableDatabase();
Cursor cursor = db.query("person",null,null,null,null,null,null);
return cursor;
}
}
Person类(表的每一行)
public class Person {
private String name;
private int _id;
public Person() {}
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
}
在将数据导入界面时还需要用到CursorAdpter,我自定义了一个CursorAdpter
MyCursorAdpter类
public class MyCursorAdpter extends CursorAdapter {
public MyCursorAdpter(Context context, Cursor c, int flags) {
super(context, c, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.item,parent,false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView txt_name = (TextView)view.findViewById(R.id.txt_name);
txt_name.setText(cursor.getString(cursor.getColumnIndex("name")));
}
}
然后是在Mainactivity实现功能的代码
获取控件并对事件实施监听
private Button add;
private Button del;
private EditText con;
private ListView lv;
private PersonDAO dao;
private Cursor c;
private Person person;
private MyCursorAdpter adp;
add = (Button)findViewById(R.id.btn_add);
del = (Button)findViewById(R.id.btn_del);
con = (EditText)findViewById(R.id.edt_cont);
lv = (ListView)findViewById(R.id.lv);
add.setOnClickListener(this);
del.setOnClickListener(this);
增加学生信息
String name =con.getText().toString();
if(TextUtils.isEmpty(name)){
Toast.makeText(this,"内容不能为空",Toast.LENGTH_SHORT).show();
}else {
person = new Person(name);
dao = new PersonDAO(this);
dao.insert(person);
c = dao.selectAll();
adp = new MyCursorAdpter(this,c,0);
lv.setAdapter(adp);
adp.notifyDataSetChanged();
删除第一条记录
if(person==null){
Toast.makeText(this,"记录不能为空",Toast.LENGTH_SHORT).show();
}else {
c.moveToFirst();
person = new Person();
person.set_id(c.getInt(c.getColumnIndex("_id")));
dao.delete(person.get_id());
addAdp();
adp.notifyDataSetChanged();
break;
}
}
addAdp()方法
private void addAdp() {
if(c!=null){
dao = new PersonDAO(this);
c = dao.selectAll();
adp = new MyCursorAdpter(this,c,0);
lv.setAdapter(adp);
}
}
图片成果展示


浙公网安备 33010602011771号