我的代码有问题,我编写了一个简单的flutter应用程序,它是f note应用程序,并且我已经将SQLite作为数据库包含在内,我首先通过模拟器运行了该应用程序,但一切都变得很酷,但是当我尝试在我的真实设备(这是一个android设备)上运行它,数据库没有响应(即,我无法向数据库添加新注释),当我返回通过模拟器运行应用程序时。我在真实设备和控制台中发现的错误
df <- matrix(sample(100:5000, 55040, replace = T), nrow = 5504, ncol = 10)
df <- data.frame(ID = 1:nrow(my.shp), df)
my.dat <- merge(my.shp, df, by = "ID")
variable.names <- paste0("X",1:10)
spplot(my.dat, rev(variable.names), col = NA, at = seq(from = 100, to = 5000, by = 500),
col.regions = distinctColorPalette(length(seq(from = 100, to = 5000, by = 500))),
main = list(label = "TEST"))
我需要帮助,请
答案 0 :(得分:0)
我看到了您的代码,问题是您得到的异常可能与此有关:
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");
}