颤振中sqlite中的多个参数
Multiple arguments in sqllite in flutter
我想知道如何将多个参数传递给 sqllite 中的原始查询。
我的代码如下
query() async {
// get a reference to the database
Database db = await DatabaseHelper.instance.database;
// raw query
List<Map> result = await db.rawQuery('SELECT * FROM my_table WHERE name=?', ['Peter']);
// print the results
result.forEach((row) => print(row));
}
在上面的代码中,我传递了一个参数 'Peter' 但是如果我想传递多个参数怎么办,例如:
List<Map> result = await db.rawQuery('SELECT * FROM my_table WHERE name=? and last_name=? and year=?', ['Peter'], ['Smith'],[2019]);
如果我执行上面的代码,我会收到错误 "Too many positional arguments: 2 expected, but 4 found." 谁能告诉我如何在 sqllite flutter 中将多个参数传递给查询?
我假设您正在使用 sqflite。
您需要将所有参数放入一个列表中,而不是多个。
下面的代码应该像这样工作:
List<Map> result = await db.rawQuery(
'SELECT * FROM my_table WHERE name=? and last_name=? and year=?',
['Peter', 'Smith', 2019]
);
有关如何使用原始查询的更多示例,请参阅他们在 pub.dev page.
上的示例
或者如果你想使用查询功能,你可以这样做:
String strVal = 'str';
int intVal = 0;
String likeVal = 'str';
final List<Map<String, dynamic>> maps = await db.query('my_table',
where: "col1 LIKE ? and col2 = ? and col3 = ?",
whereArgs: ['$likeVal%', strVal, intVal],
orderBy: 'id',
limit: 10);
我想知道如何将多个参数传递给 sqllite 中的原始查询。
我的代码如下
query() async {
// get a reference to the database
Database db = await DatabaseHelper.instance.database;
// raw query
List<Map> result = await db.rawQuery('SELECT * FROM my_table WHERE name=?', ['Peter']);
// print the results
result.forEach((row) => print(row));
}
在上面的代码中,我传递了一个参数 'Peter' 但是如果我想传递多个参数怎么办,例如:
List<Map> result = await db.rawQuery('SELECT * FROM my_table WHERE name=? and last_name=? and year=?', ['Peter'], ['Smith'],[2019]);
如果我执行上面的代码,我会收到错误 "Too many positional arguments: 2 expected, but 4 found." 谁能告诉我如何在 sqllite flutter 中将多个参数传递给查询?
我假设您正在使用 sqflite。
您需要将所有参数放入一个列表中,而不是多个。 下面的代码应该像这样工作:
List<Map> result = await db.rawQuery(
'SELECT * FROM my_table WHERE name=? and last_name=? and year=?',
['Peter', 'Smith', 2019]
);
有关如何使用原始查询的更多示例,请参阅他们在 pub.dev page.
上的示例或者如果你想使用查询功能,你可以这样做:
String strVal = 'str';
int intVal = 0;
String likeVal = 'str';
final List<Map<String, dynamic>> maps = await db.query('my_table',
where: "col1 LIKE ? and col2 = ? and col3 = ?",
whereArgs: ['$likeVal%', strVal, intVal],
orderBy: 'id',
limit: 10);