android链接SQLite的作业
android链接SQLite的作业
先上图看看结果:
分为5个java和2个xml
activity_main.xml
···java
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add"
android:text="增加一条纪录"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/del"
android:text="删除第一条记录"/>
</LinearLayout>
<ListView
android:id="@+id/list_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></ListView>
item.xml
···java
就只放一个TextView
然后是5个java的部分了,分别用于
1.创建数据库
2.创建适配器
3.创建一个person的信息封装
4.一个查询删除插入的方法集
5.主程序运行
1.创建数据库
···java
public class MyDBHelper extends SQLiteOpenHelper {
public MyDBHelper(Context context) {
super(context,"mydb.db", null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="create table person(id integer primary key autoincrement,name varchar(64))";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("droptableifexists mydb");
onCreate(db);
}
}
2.创建适配器
public class MyCursorAdapter extends CursorAdapter {
public MyCursorAdapter(Context context, Cursor cursor) {
super(context, cursor,0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
return LayoutInflater.from(context).inflate(R.layout.item_person, viewGroup, false);//
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView name = (TextView) view.findViewById(R.id.tv_name);
name.setText(cursor.getString(cursor.getColumnIndex("name")));
}
}
##3.创建一个person的信息封装
···java
public class Person implements Serializable {
private int id;
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
##4.一个查询删除插入的方法集
···java
ublic class PersonDAO {
private ListView lv;
private Context context; // Activity上下文
private MyDBHelper helper; //创建、升级、打开数据库
private SQLiteDatabase db;
private SimpleAdapter simpleAdapter;
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 Cursor selectAll() {
db =helper.getReadableDatabase();
Cursor cursor= db.query("person",null,null,null,null,null,null);
return cursor;
}
public List<Person> selectAllPersons() {
db = helper.getReadableDatabase();
//
Cursor cursor = db.rawQuery("select * from person", null);
// 将所有的数据放入List集合
// 1. 创建一个List对象
List<Person> persons = new ArrayList<>();
// 2. 循环cursor
if(cursor.moveToFirst()) {
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("id")));
person.setName(cursor.getString(cursor.getColumnIndex("name")));
persons.add(person);
}while(cursor.moveToNext());
}
return persons;
}
public void delete(int id) {
db = helper.getWritableDatabase();
db.delete("person", "id=?", new String[] {String.valueOf(id)});
String sql = "delete from person where id=?";
db.execSQL(sql, new Object[]{id});
}
}
##5.主程序运行
···java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public Boolean flag;
private ListView lv;
private Person person;
private Cursor cursor;
private Button btn_add;
private Button btn_del;
private EditText edit;
private PersonDAO personDAO;
private MyCursorAdapter adapter;
private SimpleAdapter simpleAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.list_item);
edit = (EditText) findViewById(R.id.edit);
btn_add = (Button) findViewById(R.id.add);
btn_del = (Button) findViewById(R.id.del);
btn_add.setOnClickListener(this);
btn_del.setOnClickListener(this);
PersonDAO personDAO=new PersonDAO(this);
cursor=personDAO.selectAll();
adapter=new MyCursorAdapter(this,cursor);
lv.setAdapter(adapter);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.add:
String name = edit.getText().toString();
PersonDAO personDAO = new PersonDAO(this);
if (true) {
Person person = new Person(name);
personDAO.insert(person);
cursor=personDAO.selectAll();
adapter.changeCursor(cursor);//
} else {
if (person != null) {
person.setName(name);
}
}
Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
case R.id.del:
String person2= edit.getText().toString();
PersonDAO personDAO2 = new PersonDAO(this);
if(person!=null){ //判断记录是否为空,如果是空的话会提示记录为空
cursor.moveToFirst();//数据的第一行
person=new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("_id")));
personDAO2.delete(person.getId());//调用delete方法删除第一条记录
personDAO = new PersonDAO(this);
cursor = personDAO.selectAll();
adapter = new MyCursorAdapter(this, cursor);
lv.setAdapter(adapter);
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
}
Toast.makeText(this,"记录为空",Toast.LENGTH_SHORT).show();
break;
}
}
}![](http://images2015.cnblogs.com/blog/1127043/201705/1127043-20170515132244275-523635844.png)