Android Flatter SQFLite数据库异常与rawDelete
所以,我在我的应用程序中使用了很长一段时间。除了rawDelete,一切都很好Android Flatter SQFLite数据库异常与rawDelete,android,database,flutter,sqflite,Android,Database,Flutter,Sqflite,所以,我在我的应用程序中使用了很长一段时间。除了rawDelete,一切都很好 deleteDone(int listType) async { int check = 0; var dbClient = await db; var toDelete = await dbClient.rawDelete( 'SELECT * FROM $tableName WHERE $colType = $listType AND $colDone = $chec
deleteDone(int listType) async {
int check = 0;
var dbClient = await db;
var toDelete = await dbClient.rawDelete(
'SELECT * FROM $tableName WHERE $colType = $listType AND $colDone = $check');
}
// other important part of the code:
final String tableName = "listTable";
final String colId = "id";
final String colTaskName = "name";
final String colType = "type";
final String colDone = "done";
Future<Database> initDb() async {
Directory documentDirectory = await getApplicationDocumentsDirectory();
String path = join(documentDirectory.path, "todo.db");
var ourDb = await openDatabase(path, version: 1, onCreate: _onCreate);
return ourDb;
}
void _onCreate(Database db, int version) async {
await db.execute(
"CREATE TABLE listTable (id INTEGER PRIMARY KEY, name TEXT, type TEXT, done TEXT)");
}
以下是调试日志错误:
V/DartMessenger(25865): Received message from Dart over channel 'com.tekartik.sqflite'
V/DartMessenger(25865): Deferring to registered handler to process message.
V/DartMessenger(25865): Received message from Dart over channel 'com.tekartik.sqflite'
V/DartMessenger(25865): Deferring to registered handler to process message.
E/flutter (25865): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: DatabaseException(unknown error (code 0 SQLITE_OK): Queries can be performed using SQLiteDatabase query or rawQuery methods only.) sql 'SELECT * FROM listTable WHERE type = 0 AND done = 0' args []}
E/flutter (25865): #0 wrapDatabaseException
package:sqflite/src/exception_impl.dart:11
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #1 SqfliteDatabaseFactoryImpl.wrapDatabaseException
package:sqflite/src/factory_impl.dart:29
E/flutter (25865): #2 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.safeInvokeMethod
package:sqflite/src/database_mixin.dart:184
E/flutter (25865): #3 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnRawUpdate.<anonymous closure>
package:sqflite/src/database_mixin.dart:380
E/flutter (25865): #4 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnSynchronized.<anonymous closure>
package:sqflite/src/database_mixin.dart:300
E/flutter (25865): #5 BasicLock.synchronized
package:synchronized/src/basic_lock.dart:31
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #6 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnSynchronized
package:sqflite/src/database_mixin.dart:296
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #7 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnWriteSynchronized
E/flutter (25865): #8 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnRawUpdate
package:sqflite/src/database_mixin.dart:379
E/flutter (25865): #9 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin&SqfliteDatabaseExecutorMixin.rawUpdate
package:sqflite/src/database_mixin.dart:124
E/flutter (25865): #10 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin&SqfliteDatabaseExecutorMixin.rawDelete
package:sqflite/src/database_mixin.dart:157
E/flutter (25865): #11 DatabaseHelper.deleteDone
package:mentor101/…/data/todo_db.dart:126
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #12 TodoModel.deleteDoneTasks
package:mentor101/…/model/todo_model.dart:90
E/flutter (25865): #13 TodoState.todoBottomActions.<anonymous closure>
package:mentor101/…/ui/todos.dart:242
E/flutter (25865): #14 _InkResponseState._handleTap
package:flutter/…/material/ink_well.dart:635
E/flutter (25865): #15 _InkResponseState.build.<anonymous closure>
package:flutter/…/material/ink_well.dart:711
E/flutter (25865): #16 GestureRecognizer.invokeCallback
package:flutter/…/gestures/recognizer.dart:182
E/flutter (25865): #17 TapGestureRecognizer._checkUp
package:flutter/…/gestures/tap.dart:365
E/flutter (25865): #18 TapGestureRecognizer.acceptGesture
package:flutter/…/gestures/tap.dart:312
E/flutter (25865): #19 GestureArenaManager.sweep
package:flutter/…/gestures/arena.dart:156
E/flutter (25865): #20 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
package:flutter/…/gestures/binding.dart:222
E/flutter (25865): #21 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
package:flutter/…/gestures/binding.dart:198
E/flutter (25865): #22 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent
package:flutter/…/gestures/binding.dart:156
E/flutter (25865): #23 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue
package:flutter/…/gestures/binding.dart:102
E/flutter (25865): #24 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket
package:flutter/…/gestures/binding.dart:86
E/flutter (25865): #25 _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter (25865): #26 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (25865): #27 _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter (25865): #28 _invoke1 (dart:ui/hooks.dart:250:10)
E/flutter (25865): #29 _dispatchPointerDataPacket (dart:ui/hooks.dart:159:5)
E/flutter (25865):
I/flutter (25865): list: [Instance of 'Task', Instance of 'Task', Instance of 'Task']
V/DartMessenger(25865):通过“com.tekartik.sqflite”频道接收到来自Dart的消息
V/DartMessenger(25865):遵从已注册的处理程序来处理消息。
V/DartMessenger(25865):通过“com.tekartik.sqflite”频道接收到来自Dart的消息
V/DartMessenger(25865):遵从已注册的处理程序来处理消息。
E/flatter(25865):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(148)]未处理的异常:DatabaseException(未知错误(代码0 SQLITE\u OK):只能使用SQLITE数据库查询或rawQuery方法执行查询。)sql“从列表表中选择*,其中type=0且done=0”参数[]
E/颤振(25865):#0 wrapDatabaseException
包:sqflite/src/exception\u impl.dart:11
E/颤振(25865):
E/颤振(25865):#1 sqflitedDatabaseFactoryImpl.wrapDatabaseException
包装:sqflite/src/factory_impl.dart:29
E/Flatter(25865):#2 SqflitedDatabase&Object&SqflitedDatabaseMixin.safeInvokeMethod
包:sqflite/src/database_mixin.dart:184
E/flatter(25865):#3 SqflitedDatabase&Object&SqflitedDatabaseMixin.txnRawUpdate。
包装:sqflite/src/database_mixin.dart:380
E/flatter(25865):#4 SqflitedDatabase&Object&SqflitedDatabaseMixin.txn已同步。
包:sqflite/src/database_mixin.dart:300
E/颤振(25865):#5 BasicLock.synchronized
包:synchronized/src/basic_lock.dart:31
E/颤振(25865):
E/颤振(25865):#6#SQflitedDatabase&Object&SQflitedDatabaseMixin.txn已同步
包:sqflite/src/database_mixin.dart:296
E/颤振(25865):
E/flatter(25865):#7 SqflitedDatabase&Object&SqflitedDatabaseMixin.txnWriteSynchronized
E/flatter(25865):#8 SqflitedDatabase&Object&SqflitedDatabaseMixin.txnRawUpdate
包:sqflite/src/database_mixin.dart:379
E/Flatter(25865):#9#SQflitedDatabase&Object&SQflitedDatabaseMixin&SQflitedDatabaseExecutorMixin.rawUpdate
包:sqflite/src/database_mixin.dart:124
E/flatter(25865):#10#sqflitedDatabase&Object&sqflitedDatabaseMixin&sqflitedDatabaseExecutorMixin.rawDelete
软件包:sqflite/src/database_mixin.dart:157
E/flatter(25865):#11 DatabaseHelper.deleteDone
包:mentor101/../data/todo_db.dart:126
E/颤振(25865):
E/颤振(25865):#12 TodoModel.deleteDoneTasks
软件包:导师101/../model/todo_model.dart:90
E/颤振(25865):#13 ToDestate.ToDobototomactions。
包:mentor101/../ui/todos.dart:242
E/颤振(25865):#14!
包装:颤振/../材料/墨水井。省道:635
E/颤振(25865):#15#InkResponseEstate.build。
包装:颤振/../material/ink\u井。省道:711
E/颤振(25865):#16手势识别器。调用回调
软件包:flatter/../signatures/recognizer.dart:182
E/颤振(25865):#17 TapGestureRecognitor.#检查
套装:颤振/../signatures/tap.dart:365
E/颤振(25865):#18 TapGestureRecognitor.Accept手势
套装:颤振/../signatures/tap.dart:312
E/颤振(25865):#19手势管理器
套装:颤振/../signatures/arena.飞镖:156
E/颤振(25865):#20#WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
包裹:颤振/../signatures/binding.dart:222
E/颤振(25865):#21 35; WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
包装:颤振/../signatures/binding.dart:198
E/颤振(25865):#22#WidgetsFlutterBinding&BindingBase&GestureBinding.#手点事件
包装:颤振/../signatures/binding.省道:156
E/颤振(25865):#23#WidgetsFlutterBinding&BindingBase&GestureBinding。(U Flushpointer eventqueue)
包裹:颤振/../signatures/binding.dart:102
E/颤振(25865):#24#WidgetsFlutterBinding&BindingBase&GestureBinding.(U handlePointerDataPacket)
包装:颤振/../signatures/binding.dart:86
E/颤振(25865):#25 35;根运行单位(dart:async/zone.dart:1136:13)
E/flatter(25865):#26 _CustomZone.runUnary(dart:async/zone.dart:1029:19)
E/flatter(25865):#27 _CustomZone.runUnaryGuarded(dart:async/zone.dart:931:7)
E/颤振(25865):#28 _调用1(省道:ui/挂钩。省道:250:10)
E/flatter(25865):#29 dispatchPointerDataPacket(dart:ui/hooks.dart:159:5)
E/颤振(25865):
I/flatter(25865):列表:[“任务”实例、“任务”实例、“任务”实例]
我不认为数据库和其他CRUD一样有任何问题
运作良好。同样的查询也适用于rawQuery,但是
无法使用rawDelete。我已经检查了参数列表类型和
选中,两者都给出了正确的值,但没有从列表中删除任何内容。在
rawDelete
中,您正在使用SELECT…
但您想删除正确的内容吗?是的,我想删除。哦,那么什么是用于删除的SQL命令呢?那么请阅读并查找rawDelete
示例感谢原来它是delete FROM。顺便说一句,您有方法,为什么不使用它呢?
V/DartMessenger(25865): Received message from Dart over channel 'com.tekartik.sqflite'
V/DartMessenger(25865): Deferring to registered handler to process message.
V/DartMessenger(25865): Received message from Dart over channel 'com.tekartik.sqflite'
V/DartMessenger(25865): Deferring to registered handler to process message.
E/flutter (25865): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: DatabaseException(unknown error (code 0 SQLITE_OK): Queries can be performed using SQLiteDatabase query or rawQuery methods only.) sql 'SELECT * FROM listTable WHERE type = 0 AND done = 0' args []}
E/flutter (25865): #0 wrapDatabaseException
package:sqflite/src/exception_impl.dart:11
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #1 SqfliteDatabaseFactoryImpl.wrapDatabaseException
package:sqflite/src/factory_impl.dart:29
E/flutter (25865): #2 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.safeInvokeMethod
package:sqflite/src/database_mixin.dart:184
E/flutter (25865): #3 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnRawUpdate.<anonymous closure>
package:sqflite/src/database_mixin.dart:380
E/flutter (25865): #4 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnSynchronized.<anonymous closure>
package:sqflite/src/database_mixin.dart:300
E/flutter (25865): #5 BasicLock.synchronized
package:synchronized/src/basic_lock.dart:31
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #6 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnSynchronized
package:sqflite/src/database_mixin.dart:296
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #7 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnWriteSynchronized
E/flutter (25865): #8 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin.txnRawUpdate
package:sqflite/src/database_mixin.dart:379
E/flutter (25865): #9 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin&SqfliteDatabaseExecutorMixin.rawUpdate
package:sqflite/src/database_mixin.dart:124
E/flutter (25865): #10 _SqfliteDatabaseBase&Object&SqfliteDatabaseMixin&SqfliteDatabaseExecutorMixin.rawDelete
package:sqflite/src/database_mixin.dart:157
E/flutter (25865): #11 DatabaseHelper.deleteDone
package:mentor101/…/data/todo_db.dart:126
E/flutter (25865): <asynchronous suspension>
E/flutter (25865): #12 TodoModel.deleteDoneTasks
package:mentor101/…/model/todo_model.dart:90
E/flutter (25865): #13 TodoState.todoBottomActions.<anonymous closure>
package:mentor101/…/ui/todos.dart:242
E/flutter (25865): #14 _InkResponseState._handleTap
package:flutter/…/material/ink_well.dart:635
E/flutter (25865): #15 _InkResponseState.build.<anonymous closure>
package:flutter/…/material/ink_well.dart:711
E/flutter (25865): #16 GestureRecognizer.invokeCallback
package:flutter/…/gestures/recognizer.dart:182
E/flutter (25865): #17 TapGestureRecognizer._checkUp
package:flutter/…/gestures/tap.dart:365
E/flutter (25865): #18 TapGestureRecognizer.acceptGesture
package:flutter/…/gestures/tap.dart:312
E/flutter (25865): #19 GestureArenaManager.sweep
package:flutter/…/gestures/arena.dart:156
E/flutter (25865): #20 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
package:flutter/…/gestures/binding.dart:222
E/flutter (25865): #21 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
package:flutter/…/gestures/binding.dart:198
E/flutter (25865): #22 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent
package:flutter/…/gestures/binding.dart:156
E/flutter (25865): #23 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue
package:flutter/…/gestures/binding.dart:102
E/flutter (25865): #24 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket
package:flutter/…/gestures/binding.dart:86
E/flutter (25865): #25 _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter (25865): #26 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (25865): #27 _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter (25865): #28 _invoke1 (dart:ui/hooks.dart:250:10)
E/flutter (25865): #29 _dispatchPointerDataPacket (dart:ui/hooks.dart:159:5)
E/flutter (25865):
I/flutter (25865): list: [Instance of 'Task', Instance of 'Task', Instance of 'Task']