SQL保存和删除数据

标签(空格分隔): Androidjavascript

-任务要求
1 将学生信息存入数据库
2 显示全部学生信息列表
3 删除数据库表中第一条信息。
如图所示:
java


思路:android

  • 实现显示学生信息的功能
    首先要建立数据库 将数据存入数据库表中,经过适配器将后端数据导入页面显示在ListView上

-删除数据库表中的第一条数据
删除的话经过数据库语句delete语句实现 用cursor来定位第一条数据来实现删除sql

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类继承它ide

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

同时须要一个类对表进行增删该查,这些操做要在具体的实例上也就表的行或者列进行 所以还须要一个类来表示表的行或者列。这里我是对行进行增删改查this

  • 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类(表的每一行)code

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

图片成果展现

相关文章
相关标签/搜索