1

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

一个查询填充一个数据表>我从它的“名称”列中获取字符串>我将字符串传递给这个:

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

但由于它通过“” insetad of ' ' 传递名称,我得到一个错误:42703:列“imaginaryname”不存在

4

1 回答 1

4

因为name是一个字符串,你没有用单引号括起来。

直接回答你的问题,

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

这很容易受到SQL Injection. 值必须参数化。

于 2013-05-30T09:31:44.323 回答