SQLite数据库中另一种添删改查操作
OtherPersonService
package cn.class3g.service;
import cn.class3g.domain.Person;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class OtherPersonService {
private DatabaseHelper dbHelper;
public OtherPersonService(Context context) {
dbHelper = new DatabaseHelper(context);
}
public void save(Person person) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", person.getName());
values.put("age", person.getAge());
db.insert("person", "name", values); //第二个参数name的作用体现在第三个参数values为空时
}
public void update(Person person, int id) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", person.getName());
values.put("age", person.getAge());
db.update("person", values, "personid=?", new String[]{String.valueOf(id)});
}
public Person find(int id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("person", new String[]{"personid","name","age"},
"personid=?",new String[]{String.valueOf(id)},
null,null, null);
if(cursor.moveToNext()){
Person person = new Person();
person.setId(cursor.getInt(0));
person.setName(cursor.getString(1));
person.setAge(cursor.getInt(2));
return person;
}
return null;
}
public void delete(int id){
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("person", "personid=?", new String[]{String.valueOf(id)});
}
}
测试类OtherPersonServiceTest
package cn.class3g.db;
import android.test.AndroidTestCase;
import android.util.Log;
import cn.class3g.domain.Person;
import cn.class3g.service.OtherPersonService;
import cn.class3g.service.PersonService;
public class OtherPersonServiceTest extends AndroidTestCase {
public void testSave() throws Throwable {
OtherPersonService service = new OtherPersonService(this.getContext());
Person person = new Person();
person.setName("wusong");
person.setAge(2000);
service.save(person);
Person person2 = new Person();
person2.setName("Tangbohu");
service.save(person2);
Person person3 = new Person();
person3.setName("Qiuxiang");
service.save(person3);
Person person4 = new Person();
person4.setName("Furong");
service.save(person4);
}
public void testUpdate() throws Throwable{
OtherPersonService ps = new OtherPersonService(this.getContext());
Person person = new Person("Jiangzhongzheng", 122);
ps.update(person, 5);//需要实现查看数据库中Ton的id值
}
public void testFind() throws Throwable{
OtherPersonService ps = new OtherPersonService(this.getContext());
Person person = ps.find(3);//测之前先注意被测记录id是否存在
Log.i("TAG",person.toString());
}
public void testDelete() throws Throwable{
OtherPersonService ps = new OtherPersonService(this.getContext());
ps.delete(1); //测之前先注意被测记录id是否存在
}
}
使用列表显示数据库数据
资源
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Android_db_test</string>
<string name="id_text">编号</string>
<string name="name_text">姓名</string>
<string name="age_text">年龄</string>
</resources>
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/idTitle"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="@string/id_text" />
<TextView
android:id="@+id/nameTitle"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/idTitle"
android:layout_alignTop="@id/idTitle"
android:gravity="center"
android:text="@string/name_text" />
<TextView
android:id="@+id/ageTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/nameTitle"
android:layout_alignTop="@id/nameTitle"
android:text="@string/age_text" />
</RelativeLayout>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/personList"
/>
</LinearLayout>
ListView布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/id"
android:layout_width="80dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/name"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_alignTop="@id/id"
android:layout_toRightOf="@id/id"
android:gravity="center" />
<TextView
android:id="@+id/age"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@id/name"
android:layout_toRightOf="@id/name"
android:gravity="left" />
</RelativeLayout>
Activity
package cn.class3g.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import cn.class3g.domain.Person;
import cn.class3g.service.PersonService;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends Activity {
private ListView listView;
private PersonService service;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
listView = (ListView) this.findViewById(R.id.personList);
service = new PersonService(this);
/*
* //使用SimpleAdapter List<Person> personList = service.getScrollData(3,
* 5); List<HashMap<String,String>> data = new
* ArrayList<HashMap<String,String>>();
*
* for(Person p : personList){ HashMap<String,String> map = new
* HashMap<String,String>(); map.put("personid",
* String.valueOf(p.getId())); map.put("name", p.getName());
* map.put("age", String.valueOf(p.getAge()));
*
* data.add(map); }
*
* SimpleAdapter adapter = new SimpleAdapter(this, data,
* R.layout.person_item, new String[]{"personid","name","age"}, new
* int[]{R.id.id, R.id.name, R.id.age});
*/
// 使用SimpleCursorAdapter
Cursor cursor = service.getCursorScrollData(3, 5);
//注意此时绑定的cursor中的personid as _id,不能用personid
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.person_item, cursor,
new String[] { "_id", "name","age" },
new int[] { R.id.id, R.id.name, R.id.age });
listView.setAdapter(adapter);
}
}