Create成功运行,但Insert不运行。我认为插入的论点是正确的..。但是为什么呢?
(09.09修改)问题是字符串输入参数的类别问题。
Docker)插入到Quest(类别)值(?)参数[行走(X)/‘行走’(O)/‘行走’(O)]
颤动)插入到任务(类别)值(?)参数[行走(X)/‘行走’(X)/‘行走’(X)]
flutter: CREATE TABLE Quest (
id INTEGER PRIMARY KEY AUTOINCREMENT,
category TEXT,
level INTEGER,
need_token INTEGER,
reward_token INTEGER,
start_date TIMESTAMP,
finish_date TIMESTAMP,
achieve_date TIMESTAMP,
goal INTEGER,
need_times INTEGER,
achievement INTEGER
)
flutter: DatabaseException(
Error Domain=FMDatabase Code=20 "datatype mismatch"
UserInfo={NSLocalizedDescription=datatype mismatch}
) sql 'INSERT OR REPLACE INTO Quest (
category,
level,
need_token,
reward_token,
start_date,
finish_date,
achieve_date,
goal, need_times,
achievement
) VALUES (?, ?, ?, ?, ?, ?, NULL, ?, ?, ?)'
args ['walking', 0, 0, 1, 1662658696748, 1662745096748, 100, 1, 0]
但是,插入的SQL在docker的SQLite中工作。
sqlite in docker
在docker中,SQL成功地工作了,但不能与Sqflite、Ffltter一起工作。我该怎么办?
任务的班级来了。
class Quest {
String category;
int level;
int needToken;
int rewardToken;
DateTime startDate;
DateTime finishDate;
DateTime? achieveDate;
int goal;
int needTimes;
int achievement;
...
Map<String, dynamic> toDBData() => {
'category': "'$category'",
'level': level,
'need_token': needToken,
'reward_token': rewardToken,
'start_date': startDate.millisecondsSinceEpoch,
'finish_date': finishDate.millisecondsSinceEpoch,
'achieve_date': achieveDate?.millisecondsSinceEpoch,
'goal': goal,
'need_times': needTimes,
'achievement': achievement
};
}
Future<void> insertQuest(Quest quest) async =>
await dbHelper.insert(_tableName, quest.toDBData());
Future<void> insert(String table, Map<String, dynamic> data) async => await db!
.insert(table, data, conflictAlgorithm: ConflictAlgorithm.replace);
请帮帮我。我为解决这个问题苦苦挣扎了好几天,但我还是解决不了。
1条答案
按热度按时间bhmjp9jg1#
通过以下方式解决问题
问题是已经创建了Quest表,但属性与我想要创建的属性不同。所以我放弃并重新创造了它。