打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 前言 之前学习了多种数据存储的方式,但是要是存储数据多了,前面的方式就不太合适了

转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!


前言

之前学习了多种数据存储的方式,但是要是存储数据多了,前面的方式就不太合适了,今天我们来学习手机的数据库知识。


SQLite数据库

数据库:它就是一个软件,需要安装,安装完后就有自己的目录结构。都有客户端和服务端,所有的数据库都实现了SQL标准。它是一个轻量级数据库,设计目的是嵌入式的,而且它占用的资源非常少

注意:除了主键不能存储任意的类型之外,其他的字段可以存放任意的数据类型。


Cmd操作指令:

sqlite3 qjq.db 进入数据库

.tables 查看数据库里面的表


创建数据库文件:

三种方式:

第一种通过上下文创建数据库:

  1. public class DBsqlite {  
  2.         private Context context;  
  3.         public DBsqlite(Context context) {  
  4.                 super();  
  5.                 this.context = context;  
  6.         }  
  7.         public void createDB() {  
  8.                 //通过上下文创建数据库  
  9.                    context.openOrCreateDatabase("persons.db", Context.MODE_PRIVATE, null);  
  10.         }  
  11. }  

第二种SQLiteDatabase创建数据库

  1. public void createDB(){  
  2.             String dir="/data/data/"+context.getPackageName();  
  3.             File file=new File(dir,"persons.db");  
  4.             SQLiteDatabase.openOrCreateDatabase(file, null);  
  5.     }  

第三种创建一个help类继承SQLiteOpenHelper实现DBhelp构造onCreate方法onUpgrade方法

  1. public class DBhelp extends SQLiteOpenHelper {  
  2.         public DBhelp(Context context) {  
  3. //                上下文        ,数据库名,游标工厂 ,数据版本  
  4.                 super(context, "persons.db"null2);  
  5.                 // TODO Auto-generated constructor stub  
  6.         }  
  7.         //数据库第一次创建之后调用该方法。创建表、视图。。。 或者初始化表信息  
  8.         public void onCreate(SQLiteDatabase db) {  
  9.                 // 创建数据库  
  10.                 db.execSQL("create table fish(_id integer primary key autoincrement,name text)");  
  11.         }  
  12.   
  13.         @Override  
  14. //当数据版本被改变则会执行该方法super(context, "persons.db", null, 3);  
  15.         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  16.                 // 版本修改表添加一列  
  17.                 db.execSQL("ALTER TABLE fish ADD amount integer");  
  18.         }  


Crud(增删改查)

以下分别用两种方式crud了,一种是面向SQL ,一种是面向对象,但是面向对象的源码里面其实也是在帮你拼接sql

  1. public class OtherFishService {  
  2.         private SQLiteOpenHelper mOpenHelper;  
  3.   
  4.         public OtherFishService(Context context) {  
  5.                 // TODO Auto-generated constructor stub  
  6.                 mOpenHelper = new DBHelper(context);  
  7.         }  
  8.   
  9.         /** 
  10.          * 插入数据 
  11.          * @param name 
  12.          */  
  13.         public void insert(String name){  
  14.                 SQLiteDatabase db = mOpenHelper.getWritableDatabase();  
  15. //                String sql = "insert into fish(name) values(?)";  
  16.                 if(db.isOpen()){  
  17. //                        db.execSQL(sql, new Object[]{name});  
  18.                         //insert into fish  
  19.                         //ContentValues里面就是要插入的值  
  20.                         ContentValues values = new ContentValues();  
  21.                         values.put("name", name);  
  22.                         db.insert("fish""_id", values);  
  23.                         db.close();  
  24.                 }  
  25.         }  
  26.   
  27.   
  28.         public List<Fish> query(){  
  29.   
  30.                 List<Fish> fishs = new ArrayList<Fish>();  
  31.   
  32.                 SQLiteDatabase db = mOpenHelper.getReadableDatabase();  
  33. //                String sql ="select * from fish";  
  34.                 if(db.isOpen()){  
  35.                         //cursor 就是resultset  
  36. //                        Cursor cursor = db.rawQuery(sql, null);  
  37.                         Cursor cursor = db.query("fish",//表名  
  38.                                         new String[]{"*"},//要查询的列名  
  39.                                         null,//查询条件  
  40.                                         null,//条件参数  
  41.                                         null,//分组  
  42.                                         null,//条件  
  43.                                         null);//排序  
  44.                         while(cursor.moveToNext()){  
  45.                                 //得到_id的下标  
  46.                                 int column_index = cursor.getColumnIndex("_id");  
  47.                                 //得到_id的值  
  48.                                 int _id = cursor.getInt(column_index);  
  49.   
  50.                                 String name = cursor.getString(cursor.getColumnIndex("name"));  
  51.   
  52.                                 Fish fish = new Fish(_id, name);  
  53.                                 fishs.add(fish);  
  54.                         }  
  55.                         //cursor使用完成之后一定要关闭  
  56.                         cursor.close();  
  57.                         db.close();  
  58.                 }  
  59.                 return fishs;  
  60.         }  
  61.   
  62.         public void update(Fish fish){  
  63.                 SQLiteDatabase db = mOpenHelper.getWritableDatabase();  
  64.                 if(db.isOpen()){  
  65. //                        String sql = "update Fish set name = ? where _id = ?";  
  66. //                        db.execSQL(sql,new Object[]{fish.name,fish._id});  
  67.                         ContentValues values = new ContentValues();  
  68.                         values.put("name", fish.name);  
  69.                         String whereClause = " _id = ?";  
  70.                         String[] whereArgs = new String[]{fish._id+""};  
  71.                         db.update("fish", values, whereClause, whereArgs);  
  72.                 }  
  73.         }  
  74.   
  75.         public void delete(int _id){  
  76.                 SQLiteDatabase db = mOpenHelper.getWritableDatabase();  
  77.                 if(db.isOpen()){  
  78. //                        String sql = "delete from fish where _id = ?";  
  79. //                        db.execSQL(sql,new Object[]{_id});  
  80.                         String whereClause = " _id = ?";  
  81.                         String[] whereArgs = new String[]{_id+""};  
  82.                         db.delete("fish", whereClause, whereArgs);  
  83.                 }  
  84.         }  
  85. }  



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android SQLite详解
Android数据库操作类模板
Android 数据存储总结-数据库SQLite的具体使用(附参考代码)
19. SQLite 数据库操作
android开发我的新浪微博客户端-载入页面sqlite篇(1.2)
Android 封装的数据库管理操作类
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服