我有一个5行的表。第一个(标题)是主要的。
我以这种方式存储数据:
fun insertIntoDB(title: String, login: String, password: String, note: String, dateTime: String, context: Context) {
SQLiteDatabase.loadLibs(context)
val db = getInstance(context).getWritableDatabase(password)
val cv = ContentValues()
cv.put(COLUMN_NAME_TITLE, title)
cv.put(COLUMN_NAME_LOGIN, login)
cv.put(COLUMN_NAME_PASSWORD, password)
cv.put(COLUMN_NAME_NOTE, note)
Log.i("TAG", note)
cv.put(COLUMN_NAME_DATE_TIME, dateTime)
db.insert(FeedEntry.TABLE_NAME, null, cv)
val cursor = db.rawQuery("SELECT * FROM '" + FeedEntry.TABLE_NAME + "';", null)
cursor.close()
db.close()
}
以这种方式获取它:
fun getDataFromDB(context: Context): ArrayList<Model> {
SQLiteDatabase.loadLibs(context)
val modelList = ArrayList<Model>()
val db = getInstance(context).getWritableDatabase("KILLTHEMALL")
val cursor = db.rawQuery("SELECT * FROM '" + FeedEntry.TABLE_NAME + "';", null)
if (cursor.moveToFirst()) {
do {
val model = Model()
model.title = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_TITLE))
model.login = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_LOGIN))
model.password = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_PASSWORD))
model.note = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_NOTE))
model.date = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_DATE_TIME))
modelList.add(model)
} while (cursor.moveToNext())
}
return modelList
}
在我的主要活动中,我调用方法getDataFromDB()
将其放在列表中并将其传递给适配器
val helper = DBHelper(this)
dataList = helper.getDataFromDB(this)
rvAdapter = RVAdapter(dataList)
recyclerView.adapter = rvAdapter
但是我受到了这样的打击:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.passlin, PID: 17759
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.passlin/com.example.passlin.CardsActivity}: java.lang.IllegalStateException: cursor.getString(cursor.…nIndex(COLUMN_NAME_NOTE)) must not be null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.IllegalStateException: cursor.getString(cursor.…nIndex(COLUMN_NAME_NOTE)) must not be null
at com.example.passlin.DBHelper.getDataFromDB(DBHelper.kt:85)
at com.example.passlin.CardsActivity.onCreate(CardsActivity.kt:48)
at android.app.Activity.performCreate(Activity.java:7802)
at android.app.Activity.performCreate(Activity.java:7791)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
我真的没有得到这个原因,因为我自己使用对话框将一个字符串放入NOTE字段
有什么想法吗?