Chrome Pointer

2020年4月20日 星期一

Android Studio 如何從assets 把資料庫匯到 data/data/工程包名/databases 裡面

因為每台手機的存取位址不一樣,所以我們不能直接寫死
//val DB_PATH = "/data/data/com.example.last_win/databases"  //在手机里存放数据库的位置
//val dbfile = "$DB_PATH/ingerdients.db"
像是上面那樣把路徑給寫死, 手機就會發生閃退的情況 !!

★getDatabasePath>>取得手機裡面有 ingerdients.db 檔案的路徑!!



val db = File(getDatabasePath("ingerdients.db").getPath()) //Get the file name of the databaseval dbdir: File = db.getParentFile()
if (!dbdir.exists()) {
    dbdir.mkdirs()
}
Toast.makeText(this, getDatabasePath("ingerdients.db").getPath(), LENGTH_LONG).show()

//执行数据库导入val myInput = applicationContext.assets.open("ingerdients.db") //assets.open("ingerdients.db") //欲导入的数据库val myOutput  = FileOutputStream(db)


val buffer = ByteArray(1024)
var length: Int = myInput.read(buffer)
while ((length) > 0) {
    myOutput.write(buffer, 0, length)
    length = myInput.read(buffer)
}
myOutput.flush()
myInput.close()
myOutput.close()

2020年4月18日 星期六

android studio SQLIte select like 為何不行呢?























val c = MyDB.rawQuery("select * from "+DB_TABLE+" where 樣品名稱 LIKE '%"+editText1.text.toString()+"%'", null )

記得 where 後面的 樣品名稱='apple' >>一定要加 '' 符號, like 也要加'%app%' 符號~
如果沒加就執行不出來!!

2020年4月16日 星期四

為何SQLIte 的資料庫 匯不進去 android studio裡面呢?


如果要讀取自己的SQLIte資料庫, 也就是.db檔案 ~
首先資料庫裡面一定 要有一個TABLE - android_metadata ~

那這個檔案是只要 你新增資料, 匯進資料庫時, 他就會自動產生的!!
也就是若你要讓android studio 能夠讀取你的資料的話,
首先一定要先新增資料>>才能讓資料庫裡產生一個TABLE - android_metadata的檔案~

當資料庫裡面有android_metadata的檔案後, 才可以正常讀取資料庫其他的資料表喔!!