8

SQLiteDatabase数据库操作详解

 3 years ago
source link: https://blog.csdn.net/dmk877/article/details/44876805
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

SQLiteDatabase数据库操作详解

今天花了点时间总结了一下数据的相关知识android中系统自带的数据库SQLiteDatabase数据库,这种数据库操作起来比ormLite数据库(第三方的)麻烦点,但是我对这种数据库操作比较熟悉所以我就采用了这种数据库, 如有错误欢迎大家批评指正,谢谢
1.SQLiteDatabase
       SQLiteDatabase本身是一个数据库的操作类,但是如果想进行数据库的操作,还需要android.database.sqlite.SQLiteOpenHelper类的帮助, 在执行SQL语句时execSQL()方法不能返回一个值
下图为Android中对execSQL()方法的说明
Center
2.SQLiteOpenHelper (摘自李兴华android实战开经典)
    SQLiteOpenHelper是数据库操作的辅助类,并且它是一个抽象类,所以使用时需要定义其子类,并且在子类中复写相应的抽象方法。
在SQLiteOpenHelper类中定义了三个回调方法。
    2.1 onCreate()
          此方法在第一次使用数据库时调用生成相应的数据库表,但是此方法并不是在实例化SQLiteOpenHelper类的对象时调用,而是通过对象 调用了getReadableDatabase()或getWriteableDatabase()方法时才会调用。
    2.2 onUpgrade()
          当数据库升级时会调用此方法,一般可以再此方法中将数据表删除,并且在删除表之后往往会调onCreate()方法重新创建新的数据表。
    2.3 onopen()
          当数据库打开时会调用此方法,但是一般情况下用户不需要复写此方法。
3.Android中数据库的增删改查示例代码
 3.1布局图如下
Center
3.2主机面的代码如下:
3.3DatabaseHelpter类的代码如下:
4. 针对游标的方法
Center
方法名称方法描述getCount()总记录条数isFirst()判断是否第一条记录isLast()判断是否最后一条记录moveToFirst()移动到第一条记录moveToLast()移动到最后一条记录move(int offset)移动到指定的记录moveToNext()移动到吓一条记录moveToPrevious()移动到上一条记录getColumnIndex(String columnName)获得指定列索引的int类型值
5 使用Contenvalues 注意事项

insert的一种构造方法

public long insert (String table, String nullColumnHack, ContentValues values)

table

要插入数据的表的名称

values

ContentValues对象,类似一个map通过键值对的形式存储值。

nullColumnHack

当values参数为空或者里面没有内容的时候,insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。通过观察源码的insertWithOnConflict方法可以看到当ContentValues类型的数据initialValues为null或size<=0时,就会在sql语句中添加nullColumnHack的设置。

若不添加nullColumnHack则sql语句最终的结果将会类似insert into tableName()values(NULL);这是不允许的。

若添加上nullColumnHack则sql语句将会变成insert into tableName (nullColumnHack)values(null);这是可以的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK