我从Postgre数据库读取数据时尝试使用参数。 “选择”手动工作就好了,但是在我的代码中却没有。尝试执行查询时出现异常:
cmd.ExecuteNonQuery();
我的参数是否在错误的行上?我使用C#。
public static List<string> ReadName(string tauluInput)
{
List<string> nimiLista = new List<string>();
try
{
var connString = yhteys();
using (var conn = new NpgsqlConnection(connString))
{
conn.Open(); //open connection
using (var cmd = new NpgsqlCommand("SELECT nimi FROM @taulu;", conn))
{
cmd.Parameters.AddWithValue("taulu", tauluInput);
cmd.ExecuteNonQuery();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
nimiLista.Add(reader.GetString(0));
}
return nimiLista;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
//return ex.Message;
return nimiLista;
}
}
似乎您不能在Select查询中使用占位符。他们必须在哪里工作。
相反,我解决了使用变量的问题! 所以这个:
using (var cmd = new NpgsqlCommand("SELECT nimi FROM @taulu;", conn))
应该是这样的:
using (var cmd = new NpgsqlCommand($"SELECT nimi FROM {tauluInput}", conn))