提问人:Vikram Sawant 提问时间:10/25/2023 最后编辑:marc_sVikram Sawant 更新时间:10/27/2023 访问量:36
Android Sqlite 数据库在同一函数中获取和更新值时崩溃
Android Sqlite database crash while fetching and updating the value in the same function
问:
这是使用sqlite数据库的android(Kotlin)应用程序的功能。我的表名是,列名是,我面临如下所示的错误:allcategories
clickcount
fun updateCountById(id: String?) {
val mDataBase = this.writableDatabase
val incrementQuery =
"UPDATE allcategories SET clickcount = clickcount + 1 WHERE category = ?"
val selectionArgs = arrayOf(id)
Log.d("SQL Query", "Query: $incrementQuery, Args: ${selectionArgs.joinToString(", ")}")
try {
mDataBase.execSQL(incrementQuery, selectionArgs)
} catch (e: SQLiteException) {
e.printStackTrace()
}
val query = "SELECT clickcount FROM allcategories WHERE category = ?"
val cursor = mDataBase.rawQuery(query, selectionArgs)
var updatedCount = 0
if (cursor.moveToFirst()) {
val columnIndex = cursor.getColumnIndex("clickcount")
if (columnIndex != -1) {
updatedCount = cursor.getInt(columnIndex)
}
}
cursor.close()
mDataBase.close()
Log.e("Updated Count", "Updated the count for category $id to $updatedCount")
}
以上是点击按钮时调用的函数,该函数从 db 中获取计数的当前值并将其递增 1,然后再次将递增的值更新为 db
我收到以下错误:
android.database.sqlite.SQLiteException 异常 android.database.sqlite.SQLiteException
:在 android.database.sqlite.SQLiteConnection.nativePrepareStatement 中,在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement
中 (SQLiteConnection.java:903) 在 android.database.sqlite.SQLiteConnection.prepare 中 (SQLiteConnection.java:514)
在 android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588) 位于 android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58) 位于 android.database.sqlite.SQLiteQuery。(SQLiteQuery.java:37) 在 android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:46) 在 android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1408) 在 android.database.sqlite.SQLiteDatabase.rawQuery (SQLiteDatabase.java:1347) 在 com.internetdesignzone.quotes.DatabaseHelper.getQuoteOfTheDay (DatabaseHelper.kt:214) 在 com.internetdesignzone.quotes.fragments.HomeFragment.onCreateView (HomeFragment.kt:349) 在 androidx.fragment.app.Fragment.performCreateView (Fragment.java:2995) 在 androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:523) 在 androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:261) 在 androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1840) 在 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1764) 在 androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1701) 在 androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2849) 在 androidx.fragment.app.FragmentManager.dispatchViewCreated (FragmentManager.java:2777) 在 androidx.fragment.app.Fragment.performViewCreated (Fragment.java:3020) 在 androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:551) 在 androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:261) 在 androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:113) 在 androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1374) 在 androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2841) 在 androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:2784) 在 androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:262) 在 androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:478) 在 androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:210) 在 com.internetdesignzone.quotes.MainActivity.onStart (MainActivity.kt:235) 在 android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1405) 在 android.app.Activity.performStart (Activity.java:8627) 在 android.app.ActivityThread.handleStartActivity (ActivityThread.java:2991) 在 android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:180) 在 android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:165) 在 android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142) 在 android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70) 在 android.app.ActivityThread$H.handleMessage (ActivityThread.java:1830) 在 android.os.Handler.dispatchMessage (Handler.java:106) 在 android.os.Looper.loop (Looper.java:193) 在 android.app.ActivityThread.main (ActivityThread.java:6914) 在 java.lang.reflect.Method.invoke 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
答: 暂无答案
评论
at com.internetdesignzone.quotes.DatabaseHelper.getQuoteOfTheDay (DatabaseHelper.kt:214)
HomeFragment
getQuoteOfTheDay