Android 数据存储与读取:SQLite

分类: Android 基础 2309人阅读 评论(0) 收藏 举报 sqlite android 存储 user 数据库 integer

在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。

下面介绍的基本使用:

是一个抽象类不能直接实例化,所以新建一个类DBOpenHelper继承自SQLiteOpenHelper :

[java] view plain copy print ?
  1. publicclassDBOpenHelperextendsSQLiteOpenHelper{
  2. publicDBOpenHelper(Contextcontext){
  3. super(context,"yhn.db",null,1);
  4. }
  5. //数据库第一次创建时候调用,
  6. publicvoidonCreate(SQLiteDatabasedb){
  7. db.execSQL("createtableuser(uidintegerprimarykeyautoincrement,unamevarchar(20),uaddressvarchar(20))");
  8. }
  9. //数据库文件版本号发生变化时调用
  10. publicvoidonUpgrade(SQLiteDatabasearg0,intarg1,intarg2){
  11. }

如果执行上边的代码,则会创建一个数据库文件xx.db



数据库操作类:

[java] view plain copy print ?
  1. publicclassDBDao{
  2. DBOpenHelperdbOpenHelper;
  3. publicDBDao(Contextcontext){
  4. this.dbOpenHelper=newDBOpenHelper(context);
  5. }
  6. /**
  7. *添加一条数据
  8. *@paramuser
  9. */
  10. publicvoidsave(Useruser){
  11. SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
  12. db.execSQL("insertintouser(uname,uaddress)values(?,?)",newObject[]{user.getUname(),user.getUaddress()});
  13. db.close();
  14. }
  15. /**
  16. *删除一条数据
  17. *@paramuid
  18. */
  19. publicvoiddelete(Integeruid){
  20. SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
  21. db.execSQL("deletefromuserwhereuid=?",newObject[]{uid});
  22. db.close();
  23. }
  24. /**
  25. *更新一条数据
  26. *@paramuser
  27. */
  28. publicvoidupdate(Useruser){
  29. SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
  30. db.execSQL("updateusersetuname=?,uaddress=?whereuid=?",newObject[]{user.getUname(),user.getUaddress(),user.getUid()});
  31. db.close();
  32. }
  33. /**
  34. *查找一条数据
  35. *@paramuid
  36. */
  37. publicUserfind(Integeruid){
  38. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  39. Cursorcursor=db.rawQuery("select*fromuserwhereuid=?",newString[]{uid.toString()});
  40. if(cursor.moveToFirst()){
  41. intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
  42. Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
  43. Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
  44. Useruser=newUser();
  45. user.setUid(uid2);
  46. user.setUname(uname);
  47. user.setUaddress(uaddress);
  48. returnuser;
  49. }
  50. cursor.close();
  51. returnnull;
  52. }
  53. /**
  54. *分页查找数据
  55. *@paramoffset跳过多少条数据
  56. *@parammaxResult每页多少条数据
  57. *@return
  58. */
  59. publicList<User>getScrollData(intoffset,intmaxResult){
  60. List<User>users=newArrayList<User>();
  61. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  62. Cursorcursor=db.rawQuery("select*fromuserorderbyuidasclimit?,?",newString[]{String.valueOf(offset),String.valueOf(maxResult)});
  63. while(cursor.moveToNext()){
  64. intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
  65. Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
  66. Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
  67. Useruser=newUser();
  68. user.setUid(uid2);
  69. user.setUname(uname);
  70. user.setUaddress(uaddress);
  71. users.add(user);
  72. }
  73. returnusers;
  74. }
  75. /**
  76. *获取数据总数
  77. *@return
  78. */
  79. publiclonggetCount(){
  80. SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
  81. Cursorcursor=db.rawQuery("selectcount(*)fromuser",null);
  82. cursor.moveToFirst();
  83. longreslut=cursor.getLong(0);
  84. returnreslut;
  85. }
  86. }

示例:向数据库中添加一条数据

[java] view plain copy print ?
  1. DBDaodbDao=newDBDao(this);
  2. Useruser=newUser();
  3. user.setUname("qixiaohu");
  4. user.setUaddress("chengdu");
  5. dbDao.save(user);

PC上管理SQLite数据库的方法:


上边添加数据后可以看到数据添加成功:



更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. android sqlite3
  4. [Android]libpng的编译与使用
  5. 解决Error:Android(安卓)Dex: com.android.dex.DexIndexOverflow
  6. 个人练习:ListView绑定数据和显示的几种方式
  7. Android(安卓)ERR_CLEARTEXT_NOT_PERMITTED
  8. android单元测试
  9. Android(安卓)Studio jni开发

随机推荐

  1. 1. 变量的类型转换方式 2. 变量值传递与
  2. 一次 Logback 发现的隐患
  3. AOM:光提取助力实现超低压高效白光量子点
  4. AFM:基于硫化锑纳米线的宽光谱偏振光探测
  5. AEnM:原位电化学AFM揭示H2O介导的锂氧界面
  6. AOM:碲纳米线——一种非线性光学响应超强
  7. AM:第三种三维铅/锡卤钙钛矿铁电体诞生
  8. Small:分级多腔氮掺杂碳纳米球用于快速长
  9. 前微软老兵加盟阿里云首席科学家
  10. Neutron:我前进的路还很漫长