我将一个DataTable的值(它的源当然是Postgres表)传递给查询,它将值视为列名而不是值。我知道这是因为双引号而不是单引号但我能做些什么来解决它?
查询填写DataTable>我从它的列“名称”中得到了字符串>我把字符串传递给了这个:
NpgsqlCommand id_test1 = new NpgsqlCommand("SELECT id_test FROM test WHERE name=" + test_name_string, conn);
但是因为它传递的名字带有“”insetad of'',所以我得到了一个 错误:42703:列“imaginaryname”不存在
答案 0 :(得分:4)
因为name
是一个字符串而你没有用单引号包装它。
直接回答你的问题,
"SELECT id_test FROM test WHERE name='" + test_name_string + "'"
SQL Injection
容易受到攻击。必须参数化值。