gpt4 book ai didi

function - 使用 ADO.Net “System.Data.Odbc” (VB.Net) 从 PostgreSQL 数据库中检索数据

转载 作者:行者123 更新时间:2023-11-29 13:34:36 29 4
gpt4 key购买 nike

有人要求我对 PostgreSQL 进行一些研究,并在运行以下代码后当我们读取 DBDataReader 对象时,系统返回两个条目(未命名的入口 1 和未命名的入口 2),但是我想从这两个门户中读取所有记录,然后将这些信息加载到我的业务对象中,因为每个门户在表中都有超过 5 条记录。

浏览互联网上的各个页面后,我发现有一个第三方库(“NpgSQL”> NpgsqlDataReader)提供这个功能而且是免费的。我已将他们的库插入到我的解决方案中,并且按预期工作。然而,我不想使用这个第三方软件,只是想知道是否有办法可以从这两个门户网站读取记录这会很棒。

请注意,您可以用 c# 为我们提供一个解决方案,因为我对此很熟悉。谢谢。

我目前用来检索数据的代码片段

Dim oConnection As DbConnection = DbProviderFactories.GetFactory(CONST_PROVIDER_ODBC).CreateConnection
oConnection.ConnectionString = "Valid connection string goes here"
oConnection.Open()

' Start a transaction as it is required to work with cursors in PostgreSQL
Dim tran As DbTransaction = oConnection.BeginTransaction

' Define a command to call stored procedure show_cities_multiple
Dim command As DbCommand = DbProviderFactories.GetFactory("System.Data.Odbc").CreateCommand
command.CommandText = "SELECT MyTestFunction()"
command.CommandType = CommandType.StoredProcedure
command.Connection = oConnection
command.Transaction = tran

' Execute the stored procedure and obtain the first result set
Dim dr As DbDataReader = command.ExecuteReader()

' Output the rows of the first result set
While dr.Read()

'This is where system show Unnamed Portal 1 or Unnamed portal 2 at the second time.
MsgBox(String.Format("{0}", dr(0)))
End While

tran.Commit()

-- 检索数据的功能。

CREATE OR REPLACE FUNCTION MyTestFunction() RETURNS SETOF refcursor AS $$
DECLARE
ref1 refcursor; -- Declare cursor variables
ref2 refcursor;
BEGIN
OPEN ref1 FOR SELECT * FROM MyTable1;
RETURN NEXT ref1; -- Return the cursor to the caller

OPEN ref2 FOR SELECT * FROM MyTable2;
RETURN NEXT ref2; -- Return the cursor to the caller
END;
$$ LANGUAGE plpgsql;

我目前正在处理的环境如下:-

32 位机。
Visual Studio 2010 + SP1
ODBC 提供程序:PostgreSQL Unicode 9.01.02.00
ADO.Net (System.Data.Odbc)

当然,我期待听到任何反馈,非常感谢您的帮助。

最佳答案

与 nPgSQL 相比,psqlODBC 的使用和维护较少。

两者都是“第三方”,因为它们是在核心 PostgreSQL 代码之外维护的。其他被认为对 Pg 非常重要的工具也是如此,例如 PgBouncer、pgbarman、repmgr、PgAgent-III、Slony-I、Bucardo、Skytools/Londiste 等。

一般来说,我建议在使用 .NET 时使用 nPgSQL 而不是 psqlODBC。 nPgSQL 支持 ADO.NET 和 Entity Framework,因此您无需进行大量更改即可直接使用它。

关于function - 使用 ADO.Net “System.Data.Odbc” (VB.Net) 从 PostgreSQL 数据库中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16018791/

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