从嵌入了 firebird 的 odb 数据库读取数据并从 C#

问题描述

所以,我在这里遇到了麻烦,已经尝试了 8 个小时,但已经变得很奇怪

一些背景:

我正在为一位朋友调查一个问题,我需要从由某些 Firebird 实现支持的 LibreOffice Base 自制软件数据库中转换一些数据(我是 100% 新手,所以我不确定如何这被称为/有效)我需要将此数据转换为 xml,该 xml 必须向某些第三方公司提供的某些 xsd 确认。

我已经从 xsds 生成代码(50K 行代码......)并且应该能够在 C# 中映射数据,输出一个 xml,它们很好。

但是,我在访问数据库文件中的数据时遇到了问题......我已经用谷歌搜索了不知道多久,但我似乎无法在 .net 中找到如何做到这一点。

我可以解压 .odb 文件并检查内容。只有一些 xml 定义了一些查询、表和表单。和 1 个 .fbk 文件。我实际上不确定数据与 fbk 文件的区别,但谷歌搜索只告诉我这显然是用于恢复的备份文件,我猜测它保存了实际数据,但是那么?

文件中没有很多数据,应该很容易加载到内存中,所以我不希望那里有任何问题。 (他们还为每个项目使用一个新的 db,所以每次需要 xml 转换时都会有几 MB 的顶部)

有谁知道这是否可能?我如何实现这一目标?

解决方法

您是否尝试连接到数据库以使用 C# 运行查询?这可以通过 LibreOffice SDK 完成。 SDK 发行版中包含 Calc 的 C# 示例:https://api.libreoffice.org/examples/examples.html#CLI_examples

一旦您能够让 C# 和 LO 协同工作,请在线查找 Base 示例并将它们改编为 C#,例如:

那里有很多类似的信息,虽然它没有组织得很好,所以希望花一些时间搜索。如果您愿意使用其他语言,Java 在使用 LO SDK 方面比 C# 好得多。

这是另一个完全未经测试的想法。您提到了在解压缩 .odb Base 文件时找到的 .fbk 文件。那是一个 Firebird 备份文件。所以,这似乎应该有效:

  1. 安装正确版本的 Firebird。要验证嵌入式引擎版本,请在 LO Base 中转到 Tools -> SQL 并从 Ways to Determine the Version of Firebird SQL? 运行查询 这将在 LO 7.1 中生成 3.0.0,与 {{ 版本相同3}}。
  2. 运行 LO 5.3 以恢复 .fbk 文件。
  3. 使用 ODBC 等连接从 C# 连接到 Firebird。