我们需要定义资料库名称与版本
将建立 Table 的 SQL 写在这 onCreate
以字串输入SQL语法
onUpgrade用来修改 Table 的结构
class MyDBHelper(context: Context, name:String = database, factory:
SQLiteDatabase.CursorFactory?=null, version : Int = v ) :
SQLiteOpenHelper(context,name, factory, version){
//1)
companion object{
private const val database ="mdatabase.db"
private const val v = 1
}
//2)
override fun onCreate(db: SQLiteDatabase?) {
//3)
db?.execSQL("CREATE TABLE myTable( timestamp text PRIMARY KEY NOT NULL , vocabulary text NOT NULL, mean text NOT NULL)" )
}
//4)
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.execSQL("DROP TABLE IF EXISTS myTable")
onCreate(db)
}
}
回传 cusor
moveToFirst 才能使cursor正确指向第一个位置
moveToNext()方法,可将Cursor向下移动一笔,若有资料则回传true,若无资料则回传false,代表无任何资料。
记得关闭 Cursor
val c = dbrw.rawQuery( "SELECT * FROM myTable",null)
// important
// 2)
c.moveToFirst()
for(i in 0 until c.count){
list.add(Model("${c.getString(0)}","${c.getString(1)}"))
//3)
c.moveToNext()
}
//4) 记得要关闭 cusor
c.close()
insert(String table, String nullColumnHack, ContentValues values)
table : 数据表的名称
nullColumHack:若values不为null并且元素的个数大於0,则一般将nullColumnHack设为null
ContentValues:类似一个map.通过键值对的形式存储值
建立 ContentValues , ContentValues:类似一个map.通过键值对的形式存储值
ContentValues 通过键值建立 , 需要传入 key(栏位) 跟 value(他的data)
dbrw (DataBase) insert 我们所建立的 ContentValue
for( i in datalist.indices){
// 1)
val values = ContentValues()
val vocabulary = datalist[i].vocabulary
val mean = datalist[i].meaning
// 2)
values.put("vocabulary", vocabulary);
values.put("mean", mean);
// 3)
dbrw.insert("myTable", null, values)
}
>>: UIView , UIViewController Life Cycle 常见问题
把上一篇刚打得code删一删 指留下需要的 post 有 data 的部分来呼叫 hook 相关功能...
第 30 天,本来想说或许最後一天可以来一篇心得文,让自己好好休息一下,因为这 30 天花了大量的精...
实战应用篇P1 这次我们要使用的是Line Notify当作我们的讯息传播方式,Line Not...
昨天我们在专案里导入了 detekt 静态分析套件,只要执行 $ gradle detekt 就可以...
this的指向取决於谁呼叫 物件一定指向本身 其余必须透过call、bind等等强制绑定 我们先把...