gpt4 book ai didi

c# - 使用双引号和参数添加到查询

转载 作者:行者123 更新时间:2023-11-29 14:18:09 25 4
gpt4 key购买 nike

我可以在 PgAdminIII 中运行的原始查询:

SELECT * FROM oestrat."Themenfeld"

oestratThemenfeld 是来自 Winform 文本框的字符串。

所以我在 VS 中的查询是:

string qry = "SELECT * FROM @schema.\"@line\"";

NpgsqlCommand cmd = conn.CreateCommand();
cmd.Parameters.Add(new NpgsqlParameter("@schema", tbSchema.Text)); // tbSchema.Text = oestrat
cmd.Parameters.Add(new NpgsqlParameter("@line", l)); // string l = Themenfeld

cmd.CommandText = qry;

conn.Open();
NpgsqlDataReader dr = cmd.ExecuteReader();

while (dr.Read()) <<< ERROR
{
....
}

它总是捕获异常:

42601: syntax error at or near "@"

最佳答案

我认为您不能将表名指定为参数...只能将指定为参数。

相反,要么有一个允许的表名白名单,或者至少有一个表名中允许的字符的白名单,将其应用于您的用户输入,然后 - 小心 - 构建动态的 SQL。

关于c# - 使用双引号和参数添加到查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40809325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com