今天是中秋节,心情不太好,于是乎写会代码吧.
1 建立一个新包com.andy.db.dao,
2. 建立类PersonDao.java
package com.andy.db.dao; import java.util.ArrayList; import java.util.List; import com.andy.db.PersonSQLiteOpenHelper; import com.andy.db.domain.Person; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class PersonDao { private PersonSQLiteOpenHelper helper; public PersonDao(Context context){ helper = new PersonSQLiteOpenHelper(context); } /* * 插入用户名和手机号到SQLite数据库 */ public void addPerson(String name, String number){ //此时就获取到了数据库 SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("insert into person (name,number) values (?,?)", new Object[]{name,number}); db.close(); } /** * 删除一条数据,按用户名的条件 * @param name */ public void deletePerson(String name){ SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("delete from person where name =?", new Object[]{name}); db.close(); } /** * 修改一条数据,按用户名的条件 * @param name * @param number */ public void updatePerson(String name, String number){ SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("update person set number = ? where name = ?", new Object[]{name,number} ); db.close(); } /** * 查询一条数据,按用户名的条件 * @param name * @param number */ public boolean findPerson(String name){ SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name}); boolean result = cursor.moveToNext(); cursor.close(); db.close(); return result; } public List<Person> findAllPerson(){ SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from person", null); List<Person> persons = new ArrayList<Person>(); Person person; while(cursor.moveToNext()){ int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String number = cursor.getString(cursor.getColumnIndex("number")); person = new Person(id,name,number); persons.add(person); } cursor.close(); db.close(); return persons; } }
3. 建立一个新包com.andy.db.domain
4. 在其下面创建一个新类Person.java
package com.andy.db.domain; public class Person { private int id; private String name; private String number; public Person(int id, String name, String number){ this.id = id; this.name= name; this.number = number; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", number=" + number + "]"; } 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; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }
5. 在测试类里面增加新的测试方法:
package com.andy.db.test; import java.util.List; import com.andy.db.PersonSQLiteOpenHelper; import com.andy.db.dao.PersonDao; import com.andy.db.domain.Person; import android.test.AndroidTestCase; /** * 运行过程如果报以下错误,说明没有配置测试环境 * 数据库_SqlLite does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml * @author HuiQinBo * */ public class TestPersonDB extends AndroidTestCase { public PersonDao pd; /** * getContext() 是测试框架给提供的上下文件 * * 来源:android.test.AndroidTestCase.getContext() */ public void testCreatePersonDb(){ PersonSQLiteOpenHelper db = new PersonSQLiteOpenHelper(getContext()); //打开或创建一个可写的数据库 db.getWritableDatabase(); } public void testAddPerson(){ pd = new PersonDao(getContext()); pd.addPerson("王五", "123456789"); } public void testDeletePerson(){ pd = new PersonDao(getContext()); pd.deletePerson("张三"); } public void testUpdatePerson(){ pd = new PersonDao(getContext()); pd.updatePerson("王五", "987654321"); } public void testSelectPerson(){ pd = new PersonDao(getContext()); boolean result = pd.findPerson("李四"); assertEquals(true, result); } public void testFindAll(){ pd = new PersonDao(getContext()); List<Person> persons = pd.findAllPerson(); for(Person p: persons){ System.out.println(p.toString()); } } }
6 效果图:
7项目源代码:请看附件