sqlite - Flutter 中出现 Sqflite 异常的问题
问题描述
我的代码有问题,我编写了简单的颤振应用程序,它是 f note 应用程序,并且我已经将 SQLite 作为数据库包含在内,我首先通过模拟器运行该应用程序,一切都变得很酷,但是当我尝试运行它时我的真实设备(这是一个 android 设备),数据库没有响应(即我无法向数据库添加新注释),当我返回通过模拟器运行我的应用程序时......应用程序做了同样的事情我发现在我的真实设备和控制台中我发现了这个错误
Error: Can't use 'SqfliteDatabaseException' because it is declared more than once.
我需要帮助请
解决方案
我看到了你的代码,问题是你得到的异常可能与这个有关:
PlatformException(sqlite_error, UNIQUE constraint failed: Notetable.id
这是因为您在插入新行时需要管理主键的唯一性。您可以查看这个SO question以获得快速参考。
因此,为了快速使您的代码正常工作,我进行了此更改(请将此代码仅供参考,编写更好的代码):
void createDataBase(Database db,int newVersion) async{
await db.execute('CREATE TABLE IF NOT EXISTS $noteTable ($col_id INTEGER PRIMARY KEY ,'+
'$col_title TEXT , $col_description TEXT , $col_date TEXT,$col_priority INTEGER)');
}
和
Future<int> insertData(myNote note)async{
var mdatabase = await database;
var _newNoteMap = note.convertToMap();
_newNoteMap['id'] = null;
var result = await mdatabase.insert(noteTable, _newNoteMap);
return result;
}
请注意,即使您更新现有注释,您也始终调用数据库插入。
更新:添加了额外的修改(之前未列出)
在databaseObject.dart
Map<String,dynamic> convertToMap(){
var mapObject = Map<String,dynamic>();
mapObject["id"] = _id;
mapObject["title"] = _title;
mapObject["description"] = _description;
mapObject["date"] = _date;
mapObject["priority"] = _priority;
return mapObject;
}
在Note.dart
if(res >= 1){
showAlertDialog('Status', "New note added successfully and the value of result is $res");
}
推荐阅读
- azure - 如何使用 powershell、Azure CLI 或 Terraform 更新 Azure AD 应用注册中的 Knownclientapplications
- c - 什么是一维字符串数组?
- ruby-on-rails - Mongoid unscoped find 抛出未找到错误
- scala - Scala 地图未更新
- hadoop - 如何在 Hive 3.1 上为 DynamoDB 创建外部表
- javascript - 在家里我得到那个错误:任何导航器都没有处理带有有效负载 {"params":{"company":"Marciello Resto 2"}} 的操作 'SET_PARAMS'
- python - 如何从 Dockerfile 安装 Python 3.7 和 Pip
- c# - 无法让 GetPositionFromPoint 正常工作(WPF、C#)
- sql-server - SQL Server PIVOT 仅返回一行
- github - Github 和 @slbiaslabia – user_session.country_change 国家问题