SQLite数据存储
任务的基本思路如下
输入姓名,获取存入SQLite数据库,通过adapter将数据传递到listview中增加显示,删除将从数据库中删除并显示
两个按钮布局文件就不写了
表的创建
public class MyDBHelper extends SQLiteOpenHelper {
private String sql="create table student(_id integer primary key autoincrement,"+"name text not null,classmate text not null,age integer)";
public MyDBHelper(Context context) {
super(context, "studentInfo", null,1);
}
//app中无数据或版本为1,调用
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);
}
//更新数据库,当新的版本号大于old会调用
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists student");
onCreate(db);
}
}
数据的获取和删除
public class Name implements Serializable {
private int _id;
private String name;
public Name(){
}
public Name(String name){
this.name=name;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
DAO
public void insert(Name name){
db=helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name",name.getName());
db.insert("student",null,values);
}
public Cursor selectAll() {
db =helper.getReadableDatabase();
Cursor cursor= db.query("student",null,null,null,null,null,null);
return cursor;
}
public void delete(int id){
db = helper.getWritableDatabase();
db.delete("student","_id=?",new String[]{String.valueOf(id)
adapter的创建
public Adapter(Context context, Cursor c) {
super(context, c, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
return LayoutInflater.from(context).inflate(R.layout.item,viewGroup,false);
}
@Override
public void studentView(View view, Context context, Cursor cursor) {
TextView name= (TextView) view.findViewById(R.id.tvname);
name.setText(cursor.getString(cursor.getColumnIndex("name")));
}
之后是主方法的实现代码
public class MainActivity extends AppCompatActivity {
private EditText et_name;
private ListView data;
private Adapter adapter;
private StudentDAO studentDAO;
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText)findViewById(R.id.et_name);
data = (ListView)findViewById(R.id.data);
//查询数据并进行显示
studentDAO = new StudentDAO(this);
cursor = studentDAO.selectAll();
if(cursor!=null){
Adapter = new Adapter(MainActivity.this,cursor);
data.setAdapter(adapter);
}
}
public void onClick(View view) {
switch(view.getId()){
case R.id.add:
//add数据
String name = et_input.getText().toString();
personDAO.insert(name);
cursor = personDAO.selectAll();
if(cursor!=null){
adapter = new Adapter(this,cursor);
data.setAdapter(adapter);
}
break;
case R.id.delete:
//delete数据
if(cursor!=null){
if(cursor.moveToFirst()){
studentDAO.delete(cursor.getString(cursor.getColumnIndex("_id")));
cursor = studentDAO.selectAll();
}
}
adapter = new Adapter(this,cursor);
data.setAdapter(adapter);
break;
}
总的来说,结合课上学习数据的获取创建表,显示数据,连接数据,删除数据来完成任务,每一步都离不开每一个清晰地思考,通过模仿增进技能,进一步改善技能,这就是所学为用。