Flutter / SQFLite 添加行 rawInsert
Flutter / SQFLite adding rows rawInsert
我正在使用从资产中复制的现有 SQLite 数据库。现在一切都很好,但是当试图在 table 中插入一些数据时出现错误:
DatabaseException(no such table: Parametre (code 1 SQLITE_ERROR[1])
这是我的:
Future<bool> insertUser (String user, String depot, String pwd) async {
int result = 0;
Database database = await openDatabase(dbPath);
final db = await database;
try {
result = await db.rawInsert(
'INSERT INTO Parametre (USER, DEPOT) VALUES ("$user", "$depot")');
}catch(e){
print(e);
}
if(result>0){
return true;
}else{
return false;
}
}
我错过了什么?
从表面上看,要么是您拼错了 table 名称 Parametre
,要么是您的数据库中没有具有该名称的 table。您应该 运行 一个 CREATE TABLE
语句来在之前的某处创建 table (或者,如果您的代码中有它,它还没有 运行 或包含其他一些错误) .
了解 sqflite
为其 openDatabase
方法提供了两个很好的论据可能会对您有所帮助:onCreate
和 onUpdate
。它们允许您在创建数据库时调用自定义函数(一种在第一个 运行 时创建您的应用程序所需的所有 table 的简单方法)和另一个不同的函数来更新您的数据库,方法是添加 tables 或更改列,如果您只是为相同的 openDatabase
函数提供连贯的 version
参数。
好的,问题似乎出在 dbPath 中。 dbPath 设置为 'assets/myDatabase.db'。第一步是将数据库从资产复制到应用程序。
其次,在复制数据库后,我不必使用 openDatabase
的完整路径。正确的方法是只使用数据库名称,意思是 openDatabase('myDatabase.db')
.
我正在使用从资产中复制的现有 SQLite 数据库。现在一切都很好,但是当试图在 table 中插入一些数据时出现错误:
DatabaseException(no such table: Parametre (code 1 SQLITE_ERROR[1])
这是我的:
Future<bool> insertUser (String user, String depot, String pwd) async {
int result = 0;
Database database = await openDatabase(dbPath);
final db = await database;
try {
result = await db.rawInsert(
'INSERT INTO Parametre (USER, DEPOT) VALUES ("$user", "$depot")');
}catch(e){
print(e);
}
if(result>0){
return true;
}else{
return false;
}
}
我错过了什么?
从表面上看,要么是您拼错了 table 名称 Parametre
,要么是您的数据库中没有具有该名称的 table。您应该 运行 一个 CREATE TABLE
语句来在之前的某处创建 table (或者,如果您的代码中有它,它还没有 运行 或包含其他一些错误) .
了解 sqflite
为其 openDatabase
方法提供了两个很好的论据可能会对您有所帮助:onCreate
和 onUpdate
。它们允许您在创建数据库时调用自定义函数(一种在第一个 运行 时创建您的应用程序所需的所有 table 的简单方法)和另一个不同的函数来更新您的数据库,方法是添加 tables 或更改列,如果您只是为相同的 openDatabase
函数提供连贯的 version
参数。
好的,问题似乎出在 dbPath 中。 dbPath 设置为 'assets/myDatabase.db'。第一步是将数据库从资产复制到应用程序。
其次,在复制数据库后,我不必使用 openDatabase
的完整路径。正确的方法是只使用数据库名称,意思是 openDatabase('myDatabase.db')
.