我试图添加一行到我的“练习”表为我的健身房_跟踪器应用程序,奇怪的是,每当我添加练习不是所有的项目都插入,我是新的sqflite所以可能有一些错误在我的代码,请告诉我,如果这看起来正确:这是我的exercise create方法:
Future<Database> initialdatabase2() async {
String databasepath = await getDatabasesPath();
var path = join(databasepath, "exercises.db");
Database mydb = await openDatabase(path,
onCreate: _oncreate2, version: 1, onUpgrade: _onupgrade);
return mydb;
}
//exercise db
_oncreate2(Database db2, int version) async {
await db2.execute('''
CREATE TABLE "exercises"
(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT , workoutname Text , exercisename Text , sets INTEGER , reps INTEGER , weight REAL
)
''');
这是我的插入方法:
insertData2(String sql) async {
Database? db = await get2();
int response = await db!.rawInsert(sql);
return response;
}
这是我在我的cubit中使用它的地方(我使用cubit作为我的状态管理):
void addexercise(
{required String name,
required String workoutname,
required int reps,
required int sets,
required double weight}) async {
print(name);
print(workoutname);
print(reps);
print(sets);
print(weight);
emit(ExercisesListLoadingState());
await casheHelper
.insertData2(
"INSERT INTO 'exercises' (workoutname ,exercisename , sets ,reps ,weight) VALUES ('$workoutname','$name',$sets ,$reps ,$weight )")
.then((value) {
exercisesname = [];
loadexercises();
print("exercise added");
emit(ExercisesListAddSuccessState());
});
}
请注意,当我在我的cubit方法中打印数据时,我拥有所有数据,但每当我从表中调用它们时,只有其中两个(workoutname和weight)为null。
1条答案
按热度按时间uxh89sit1#
也许这不是原因,但你应该首先使用参数,而不是把参数放在sql语句中,也就是说,而不是
试试这样的:
更多信息:https://github.com/tekartik/sqflite/blob/master/sqflite/doc/sql.md#parameters