Sqflite异常在Flutter中出现问题

时间:2019-01-20 21:38:00

标签: sqlite flutter

我的代码有问题,我编写了一个简单的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")) 

我需要帮助,请

1 个答案:

答案 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");

  }