android对sqlite数据库操作(创建 增 删 改 查)

操作sqlite数据库第一种方法execSql() rawQuery () 第二种方法:insert() delete() update() query()

创建sqlite数据库代码
  1. /**
  2. *通过继承SqliteOpenHelper来创建一个数据库
  3. *@authorAdministrator
  4. *
  5. */
  6. publicclassDbOpenhelperextendsSQLiteOpenHelper
  7. {
  8. privatestaticStringDATABASENAME="secn.db";
  9. privatestaticintDATABASEVERSION=2;
  10. /**
  11. *(Contextcontext,Stringname,CursorFactoryfactory,intversion)
  12. *@paramcontext上下文对象
  13. *@paramname数据库名称secb.db
  14. *@paramfactory游标工厂
  15. *@paramversion数据库版本
  16. */
  17. publicDbOpenhelper(Contextcontext)
  18. {
  19. super(context,DATABASENAME,null,DATABASEVERSION);
  20. }
  21. /**数据库第一次被使用时创建数据库
  22. *@paramdb操作数据库的
  23. */
  24. publicvoidonCreate(SQLiteDatabasedb)
  25. {
  26. //执行有更新行为的sql语句
  27. db.execSQL("CREATETableperson(personidintegerprimarykeyautoincrement,namevarchar(20),amountinteger,ageinteger)");
  28. }
  29. /**数据库版本发生改变时才会被调用,数据库在升级时才会被调用;
  30. *@paramdb操作数据库
  31. *@paramoldVersion旧版本
  32. *@paramnewVersion新版本
  33. */
  34. publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)
  35. {
  36. db.execSQL("droptableifexistsperson");
  37. onCreate(db);
  38. }
  39. }

对数据库操作代码
  1. /**
  2. *对Person对象的sql操作(增删改查)
  3. *
  4. *@authorAdministrator
  5. *
  6. */
  7. publicclassPersonService
  8. {
  9. privateDbOpenhelperdbOpenHelper;
  10. publicPersonService(Contextcontext)
  11. {
  12. dbOpenHelper=newDbOpenhelper(context);
  13. }
  14. /**
  15. *添加Person
  16. *
  17. *@paramperson
  18. */
  19. publicvoidaddPerson(Personperson)
  20. {
  21. //对读和写操作的方法
  22. //如果当我们二次调用这个数据库方法,他们调用的是同一个数据库对象,在这里的方法创建的数据调用对象是用的同一个对象
  23. SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
  24. db.execSQL("insertintoPerson(name,amount)values(?,?)",newObject[]
  25. {person.getName(),person.getAmount()});
  26. }
  27. /**
  28. *修改Person
  29. *
  30. *@paramperson
  31. */
  32. publicvoidmodifyPerson(Personperson)
  33. {
  34. SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
  35. db.execSQL("updatePersonsetname=?wherepersonid=?",newObject[]
  36. {person.getName(),person.getId()});
  37. }
  38. /**
  39. *删除Person
  40. *
  41. *@paramperson
  42. */
  43. publicvoiddeletePerson(Integerid)
  44. {
  45. SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
  46. db.execSQL("deletefromPersonwherepersonid=?",newObject[]
  47. {id.toString()});
  48. }
  49. /**
  50. *根据person的Id查询Person对象
  51. *
  52. *@paramid
  53. *Person的ID
  54. *@returnPerson
  55. */
  56. publicPersonfindPerson(Integerid)
  57. {
  58. //只对读的操作的方法
  59. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  60. //Cursor游标的位置,默认是0,所有在操作时一定要先cursor.moveToFirst()一下,定位到第一条记录
  61. //Cursorcursor=
  62. //db.rawQuery("select*frompersonWherepersonid=?",new
  63. //String[]{id.toString()});
  64. Cursorcursor=db.query("Person",newString[]
  65. {"personid","name","amount"},"personid=?",newString[]
  66. {id.toString()},null,null,null);
  67. if(cursor.moveToFirst())
  68. {
  69. intpersonId=cursor.getInt(cursor.getColumnIndex("personid"));
  70. Stringname=cursor.getString(cursor.getColumnIndex("name"));
  71. intamount=cursor.getInt(cursor.getColumnIndex("amount"));
  72. returnnewPerson(personId,name,amount);
  73. }
  74. returnnull;
  75. }
  76. /**
  77. *返回Person对象的集合
  78. *
  79. *@returnList<Person>
  80. */
  81. publicList<Person>findPersonList(Integerstart,Integerlength)
  82. {
  83. List<Person>persons=newArrayList<Person>();
  84. //只对读的操作的方法
  85. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  86. Cursorcursor=db.rawQuery("select*fromPersonlimit?,?",
  87. newString[]
  88. {start.toString(),length.toString()});
  89. cursor=db.query("Person",null,null,null,null,null,null,start
  90. +","+length);
  91. while(cursor.moveToNext())
  92. {
  93. intpersonId=cursor.getInt(cursor.getColumnIndex("personid"));
  94. Stringname=cursor.getString(cursor.getColumnIndex("name"));
  95. intamount=cursor.getInt(cursor.getColumnIndex("amount"));
  96. persons.add(newPerson(personId,name,amount));
  97. }
  98. returnpersons;
  99. }
  100. /**
  101. *返回Person的记录总个数
  102. *
  103. *@return
  104. */
  105. publicLonggetCount()
  106. {
  107. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  108. Cursorcursor=db.rawQuery("selectcount(0)fromPerson",null);
  109. //这里必定有一条记录.所有不用判断,直接移到第一条.
  110. cursor.moveToFirst();
  111. //这里只有一个字段时候返回
  112. returncursor.getLong(0);
  113. }
  114. /**
  115. *操作一个事务
  116. *
  117. *@return
  118. */
  119. publicStringgetTransaction()
  120. {
  121. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  122. Stringsuccess="";
  123. db.beginTransaction();
  124. try
  125. {
  126. db.execSQL("updatepersonsetamount=amount+10wherepersonId=?",
  127. newObject[]
  128. {1});
  129. db.execSQL("updatepersonsetamount=amount-10wherepersonId=?",
  130. newObject[]
  131. {2});
  132. success="success";
  133. }catch(Exceptione)
  134. {
  135. success="input";
  136. }finally
  137. {
  138. //db.setTransactionSuccessful();//设置事务标志为成功,当结束事务时就会提交事务
  139. db.endTransaction();
  140. }
  141. returnsuccess;
  142. }
  143. }

客户端测试代码
  1. publicclassSqliteTestextendsAndroidTestCase
  2. {
  3. /**
  4. *创建数据库及新建表
  5. */
  6. publicvoidtestCreateSqllite()
  7. {
  8. DbOpenhelperdb=newDbOpenhelper(this.getContext());
  9. //第一次调用该方法会调用数据库
  10. db.getWritableDatabase();
  11. }
  12. /**
  13. *添加Person
  14. */
  15. publicvoidtestSavePerson()
  16. {
  17. PersonServicedb=newPersonService(this.getContext());
  18. Personperson=newPerson();
  19. person.setName("LiMing");
  20. person.setAmount(888);
  21. db.addPerson(person);
  22. }
  23. /**
  24. *更新Person
  25. */
  26. publicvoidtestUpdatePerson()
  27. {
  28. PersonServicedb=newPersonService(this.getContext());
  29. Personperson=newPerson();
  30. person.setId(1);
  31. person.setName("LiMingRen");
  32. person.setAmount(101);
  33. db.modifyPerson(person);
  34. }
  35. /**
  36. *删除Person
  37. */
  38. publicvoidtestDeletePerson()
  39. {
  40. PersonServicedb=newPersonService(this.getContext());
  41. db.deletePerson(1);
  42. }
  43. /**
  44. *查询一条Person记录
  45. */
  46. publicvoidtestPerson()
  47. {
  48. PersonServicedb=newPersonService(this.getContext());
  49. Personperson=db.findPerson(2);
  50. Log.i("SqliteTest",person.toString());
  51. }
  52. /**
  53. *查询Person集合对象
  54. */
  55. publicvoidtestPersonList()
  56. {
  57. PersonServicedb=newPersonService(this.getContext());
  58. List<Person>persons=db.findPersonList(0,5);
  59. for(Personparson:persons)
  60. {
  61. Log.i("SqliteTest",parson.toString());
  62. }
  63. }
  64. /**
  65. *测试一个事务
  66. */
  67. publicvoidtestgetTransaction(){
  68. PersonServicedb=newPersonService(this.getContext());
  69. Stringstr=db.getTransaction();
  70. Log.i("SqliteTest",str);
  71. }
  72. }

Person对象代码
  1. publicclassPerson
  2. {
  3. privateintid;
  4. privateStringname;
  5. privateintamount;
  6. publicPerson()
  7. {
  8. }
  9. publicPerson(intid,Stringname,intamount)
  10. {
  11. super();
  12. this.id=id;
  13. this.name=name;
  14. this.amount=amount;
  15. }
  16. publicintgetId()
  17. {
  18. returnid;
  19. }
  20. publicvoidsetId(intid)
  21. {
  22. this.id=id;
  23. }
  24. publicStringgetName()
  25. {
  26. returnname;
  27. }
  28. publicvoidsetName(Stringname)
  29. {
  30. this.name=name;
  31. }
  32. publicintgetAmount()
  33. {
  34. returnamount;
  35. }
  36. publicvoidsetAmount(intamount)
  37. {
  38. this.amount=amount;
  39. }
  40. publicStringtoString()
  41. {
  42. return"ID:"+id+"Name:"+name+"Amount:"+amount;
  43. }
  44. }

更多相关文章

  1. Android8.0源码解析——Activity的启动过程
  2. Android(安卓)对话框(三)自定义对话框
  3. Android(安卓)内存溢出问题分析
  4. 调用Android系统设置
  5. android 反编译操作
  6. Android与Js调用
  7. Opencv JNI Android(安卓)Camera 效率分析
  8. NDK(1)--体验NDK
  9. 关于Android(安卓)NDK如何成功调用stl的使用分析

随机推荐

  1. 谷安: 该打针吃药啦:新的 Android 恶意应
  2. 阿里面试官:关于RecyclerView做下分享
  3. [来自异次元] 选择适合自己的 Android (
  4. Android(安卓)应用程序基础
  5. 热门Android(安卓)Studio 插件,这里是Top
  6. 在android上使用easyPR+caffe进行车牌检
  7. Android中Intent组件详解
  8. Android(线程二) 线程池详解
  9. android保存联系人到通讯录
  10. nfc是什么 手机nfc功能是什么