解决了42601:语法错误在“ $ 1”或附近(从数据库中读取无效)

时间:2019-11-30 12:04:09

标签: c# sql postgresql syntax-error npgsql

我从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))

0 个答案:

没有答案