gpt4 book ai didi

c# - 在 .Net 中检索 Firebird ODS 版本

转载 作者:太空狗 更新时间:2023-10-30 01:31:41 24 4
gpt4 key购买 nike

我使用的是 firebird embedded v 2.5 和 .net FirebirdSql.Data.FirebirdClient。我需要能够检索 ODS给定数据库的版本。

我试过:

private string GetOds(FbConnection connection)
{
using (var cmd = new FbCommand())
{
var sqlQuery = "select rdb$get_context('SYSTEM','ENGINE_VERSION') as version from RDB$DATABASE";
cmd.CommandText = sqlQuery;
cmd.Connection = connection;
cmd.CommandType = CommandType.Text;

using (var reader = cmd.ExecuteReader()) // HERE ITS WHERE THE EXCEPTION IS GENERATED.
{
...
}
}
}

这会生成一个执行:{"Dynamic SQL Error\r\nSQL error code = -804\r\nFunction unknown\r\nRDB$GET_CONTEXT"}

最佳答案

您可以使用 FirebirdSql.Data.FirebirdClient.FbDatabaseInfo 类检索 ODS 版本,它包装了一个 FbConnection 并可用于检索有关数据库的信息,对于示例:

using (var connection = new FbConnection(@"User=sysdba;Password=masterkey;Database=C:\path\to\your\database.fdb;DataSource=localhost"))
{
connection.Open();
var dbInfo = new FbDatabaseInfo(connection);

Console.WriteLine("ODS Major: " + dbInfo.OdsVersion);
Console.WriteLine("ODS Minor: " + dbInfo.OdsMinorVersion);
Console.ReadLine();
}

这应该适用于 Firebird 支持的所有 ODS 版本,与仅在 ODS 11.2 或更高版本上受支持的 RDB$GET_CONTEXT 相反。

关于c# - 在 .Net 中检索 Firebird ODS 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40164341/

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