npgsql将值视为列名

时间:2013-05-30 09:29:38

标签: npgsql

我将一个DataTable的值(它的源当然是Postgres表)传递给查询,它将值视为列名而不是值。我知道这是因为双引号而不是单引号但我能做些什么来解决它?

查询填写DataTable>我从它的列“名称”中得到了字符串>我把字符串传递给了这个:

 NpgsqlCommand id_test1 = new NpgsqlCommand("SELECT id_test FROM test WHERE name=" + test_name_string, conn);

但是因为它传递的名字带有“”insetad of'',所以我得到了一个  错误:42703:列“imaginaryname”不存在

1 个答案:

答案 0 :(得分:4)

因为name是一个字符串而你没有用单引号包装它。

直接回答你的问题,

"SELECT id_test FROM test WHERE name='" + test_name_string + "'"

SQL Injection容易受到攻击。必须参数化值。