将map的值插入到字符串中

时间:2015-05-05 15:17:13

标签: dart

我看了postgresql driver dokumentation。我在那里找到了以下代码。

conn.query('select color from crayons where id = @id', {'id': 5})
  .toList()
    .then((result) { print(result); });

conn.execute('insert into crayons values (@id, @color)',
             {'id': 1, 'color': 'pink'})
    .then((_) { print('done.'); });

我想测试将id插入字符串并将以下代码放入try.dart.org

// Go ahead and modify this example.

void main() {
var string = 'select color from crayons where id = @id', {'id': 5};
  print(string);
}

不幸的是,这给了我以下错误Compilation failed: Expected identifier, but got '{'.。我也尝试了一些缩写,但没有任何帮助。

所以问题是。如何将地图的值正确插入字符串?

1 个答案:

答案 0 :(得分:4)

来自PostgreSQL驱动程序的示例代码意味着query()方法需要两个参数,一个字符串和一个映射。

你的第二个例子似乎试图进行字符串插值。在Dart中,这看起来像

var id = 5;
var string = 'select color from crayons where id = $id'; // or ${id}
  print(string);

请不要为SQL尝试此操作。这为SQL注入附件打开了一个大漏洞。

PostgresSQL以安全的方式进行自己的字符串插值。