初探sqlite

  1. QLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。但有一个特例,如果是INTEGER PRIMARY KEY,则其他类型不会被转换,会报一个“datatype missmatch”的错误。  
  2. SQLite支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,分别代表空值、整型值、浮点值、字符串文本、二进制对象  
  3. SQLite 只提供数据库级的锁定。  
  4. SQLite 没有用户帐户概念,而是根据文件系统确定所有数据库的权限。  
  5. 完成了对数据库的操作后,记得调用SQLiteDatabase的close()方法释放数据库连接,否则容易出现SQLiteException。  
  6.   
  7. SQlite 通过文件来保存数据库,一个文件就是一个数据库。  
  8. 数据库里又包含数个表格;  
  9. 每个表格里面包含了多个记录;  
  10. 每个记录由多个字段组成;  
  11. 每个字段都有其对应的值;  
  12. 每个值都可以指定类型。  
  13. 数据库名称即文件名;表格有自己的名称;记录没有名称;每个字段都有名称。在SQlite中,记录没有顺序的概念,不存在第一、第二此类的概念;只能通过查询来获取满足条件的记录。我们通过执行SQL指令来操作数据库。  
  14.   
  15. SQLiteOpenHelper类介绍  
  16. SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法  
  17. 构造方法,一般是传递一个要创建的数据库名称那么参数  
  18. SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)  
  19. 创建数据库时调用  
  20. onCreate(SQLiteDatabase db)  
  21. 版本更新时调用  
  22. onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)  
  23. 创建或打开一个只读数据库  
  24. getReadableDatabase()  
  25. 创建或打开一个读写数据库  
  26. getWritableDatabase()  
  27. 创建数据库  
  28. 这里特别的地方是通过调用了SQLiteOpenHelper类的getReadableDatabase()方法来实现创建一个数据库的  
  29. DatabaseHelper database = new DatabaseHelper(this);//这段代码放到Activity类中才用this  
  30. SQLiteDatabase db = null;  
  31. db = database.getReadalbeDatabase();  
  32. SQLiteDatabase类为我们提供了很多种方法,而较常用的方法如下  
  33. (返回值)方法名    方法描述  
  34. (int) delete(String table,String whereClause,String[] whereArgs)    删除数据行的便捷方法  
  35. (long) insert(String table,String nullColumnHack,ContentValues values)  添加数据行的便捷方法  
  36. (int) update(String table, ContentValues values, String whereClause, String[] whereArgs)    更新数据行的便捷方法  
  37. (void) execSQL(String sql)  执行一个SQL语句,可以是一个select或其他的sql语句  
  38. (void) close()  关闭数据库  
  39. (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)   查询指定的数据表返回一个带游标的数据集  
  40. (Cursor) rawQuery(String sql, String[] selectionArgs)   运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)  
  41.   
  42. 数据查询  
  43. 数据查询相对前面几种方法就复杂一些了,因为查询会带有很多条件  
  44. 通过query实现查询的  
  45. public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)  
  46. 各参数说明:  
  47. table:表名称  
  48. colums:列名称数组  
  49. selection:条件子句,相当于where  
  50. selectionArgs:条件语句的参数数组  
  51. groupBy:分组  
  52. having:分组条件  
  53. orderBy:排序类  
  54. limit:分页查询的限制  
  55. Cursor:返回值,相当于结果集ResultSet  
  56.   
  57. 针对游标(Cursor)也提供了不少方法  
  58. 方法名称    方法描述  
  59. getCount()  总记录条数  
  60. isFirst()   判断是否第一条记录  
  61. isLast()    判断是否最后一条记录  
  62. moveToFirst()   移动到第一条记录  
  63. moveToLast()    移动到最后一条记录  
  64. move(int offset)    移动到指定的记录  
  65. moveToNext()    移动到吓一条记录  
  66. moveToPrevious()    移动到上一条记录  
  67. getColumnIndex(String columnName)   获得指定列索引的int类型值 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值