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

问题描述 投票:0回答:1

我曾尝试从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))
c# sql postgresql syntax-error npgsql
1个回答
-1
投票

将以下行更改为

cmd.Parameters.AddWithValue("@taulu", tauluInput);
© www.soinside.com 2019 - 2024. All rights reserved.