gpt4 book ai didi

c# - NpgSQL 抛出异常

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

我目前正在开发一个具有 PostgreSQL 后端的 .Net 应用程序。我正在使用 NpgSQL 来连接两者。当我尝试进行简单的数据检索时,NpgSQL 返回以下错误:

42601: syntax error at or near "get_all_reviews"

正在调用的 PostgreSQL 函数:

create or replace function public.get_all_reviews()
returns TABLE(review_text text, review_sentiment integer) as $$
begin
return query select rec.review_text, rec.review_sentiment from reviews as rec;
end;
$$ language plpgsql;

ALTER FUNCTION public.get_all_reviews()
OWNER TO postgres;

C#/NpgSQL:

 public List<Review> GetReviews()
{
var reviews = new List<Review>();
var postgresqlConnection = new NpgsqlConnection("Server=localhost;Port=5432;User Id=user;Password=password;Database=db;");
postgresqlConnection.Open();

var command = new NpgsqlCommand("get_all_reviews", postgresqlConnection);
try
{
var dataReader = command.ExecuteReader();

...do stuff

postgresqlConnection.Close();
}
catch(Exception ex)
{
throw ex;
}

return reviews;
}

command.ExecuteReader() 发生异常。但是,如果我在 pgAdmin4 中运行以下查询,我会从上述函数中获得所需的结果:

select get_all_reviews()

最佳答案

您成功执行的 SQL 是:

select get_all_reviews()

当您从 C# 运行它时,您运行了不同的 SQL:

get_all_reviews

因此,解决方案是在 C# 中也使用有效的 SQL:

var command = new NpgsqlCommand("select get_all_reviews()", postgresqlConnection);

这是必要的,因为 FUNCTION 返回一个 TABLE,您正在从中进行选择。

关于c# - NpgSQL 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420591/

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