创建一个数据库                                                                          

public PersonSQLite(Context context) {
super(context, "person.db", null, 1);
// TODO 自动生成的构造函数存根
}

背景                                                                                         

这里以一个Person类来举例,Person类里面有成员变量,数据库的列也是这几项。

Person类                                                                                

private int id;
private String name;
private String number;

SQL语句类                                                                                 

private PersonSQLite sqlite;

    public PersonDao2(Context context) {
sqlite = new PersonSQLite(context);
} public long add(String name ,String number)
{
SQLiteDatabase db = sqlite.getWritableDatabase();
//db.execSQL("insert into person (name,number) values (?,?)", new Object[]{name,number});
ContentValues values = new ContentValues();
values.put("name", name);
values.put("number", number);
long id = db.insert("person", null, values);
db.close();
return id;
} public boolean find(String name)
{
SQLiteDatabase db = sqlite.getReadableDatabase();
//Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name});
Cursor cursor = db.query("person", null,"name=?", new String[]{name}, null, null, null);
boolean result = cursor.moveToNext();
cursor.close();
db.close();
return result;
} public int update(String name , String newnumber)
{
SQLiteDatabase db = sqlite.getWritableDatabase();
//db.execSQL("update person set number=? where name =?",new Object[]{newnumber,name});
ContentValues values = new ContentValues();
values.put("number", newnumber);
int number = db.update("person", values, "name=?", new String[]{newnumber});
db.close();
return number;
} public int delete(String name)
{
SQLiteDatabase db = sqlite.getWritableDatabase();
//db.execSQL("delete from person where name = ?",new Object[]{name});
int number = db.delete("person", "name=?", new String[]{name});
db.close();
return number;
} public List<Person> findAll()
{
SQLiteDatabase db = sqlite.getReadableDatabase();
List<Person> persons = new ArrayList<Person>();
//Cursor cursor = db.rawQuery("select name,id,number from person",null);
Cursor cursor = db.query("person", new String[]{"name","id","number"}, null, null, null, null, null);
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 p = new Person(id,name,number);
persons.add(p);
}
cursor.close();
db.close();
return persons;
}

这些方法的作用通过名字可以理解的吧~~然后注释掉的语句是直接通过SQL语句写的,另外一种写法就是调用官方的网API。里面比如db.query,还有db.delete等。

测试类                                                                                        

public class testDB extends AndroidTestCase {
public void testCreateDB() throws Exception {
PersonSQLite sqlite = new PersonSQLite(getContext());
sqlite.getWritableDatabase(); } public void testAdd() throws Exception
{
PersonDao dao = new PersonDao(getContext());
dao.add("wangwu","123321");
} public void testFind()
{
PersonDao dao = new PersonDao(getContext());
boolean result = dao.find("wangwu");
assertEquals(true, result);
} public void testUpdate()
{
PersonDao dao = new PersonDao(getContext());
dao.update("wangwu", "122222222");
} public void testeDelete()
{
PersonDao dao = new PersonDao(getContext());
dao.delete("wangwu");
} public void testFindAll()
{
PersonDao dao = new PersonDao(getContext());
List<Person> persons = dao.findAll();
for(Person p : persons)
{
System.out.println(p.toString());
}
} }

测试权限                                                                                     

<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.yuyidong.sqlite">
</instrumentation> <uses-library android:name="android.test.runner"/>

我是天王盖地虎的分割线                                                                

之前写过一个Sqlite的博客,但是没有这样测试着弄,是直接操作的,所以可能会有问题,这里再发一帖更正以前的错误。

源代码:http://pan.baidu.com/s/1dD1Qx01

SQLite1.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

最新文章

  1. 安装vmall5:从ebak恢复数据,需要配置php.ini
  2. spring1冲刺感想与总结
  3. collectionView布局原理及瀑布流布局方式
  4. 一个小笔记(8):EN_2
  5. Java基础-面板组件
  6. 如何引用传递String Boolean 等,并改变他们的值
  7. SonarQube4.4+Jenkins进行代码检查实例之二
  8. 用JSTL简化Java Web开发
  9. javascript中对条件推断语句的优化
  10. [ACdream]女神教你字符串——违和感
  11. Git 用户名和邮箱
  12. 从 0 到 1 实现 React 系列 —— 1.JSX 和 Virtual DOM
  13. ZOOKEEPER典型应用场景解析
  14. Logstash安装和使用
  15. UWP 下载文件显示下载进度
  16. 团队Git使用教程
  17. Android井字游戏(二)游戏界面
  18. Spark案例分析
  19. Spring和Spring MVC包扫描
  20. 局域网Cesium离线影像及瓦片影像地图加载【转】

热门文章

  1. Django Suit v2-dev 使用
  2. 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)I - B-旅行
  3. export导出.xls时,在火狐的情况下出现表名乱码的情况的解决方案
  4. java面试题一
  5. Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机
  6. 安装与配置ironic
  7. [NC13C]形态形成场/[Gym100430B]Divisible Substrings
  8. [CodeForces-178F]Representative Sampling
  9. bzoj 2809: [Apio2012]dispatching -- 可并堆
  10. c# -- 解决FromsAuthentication上下文不存在