【问题标题】:How to get a list of all database names in FileMaker pro using ODBC C#如何使用 ODBC C# 在 FileMaker pro 中获取所有数据库名称的列表
【发布时间】:2015-04-30 21:31:26
【问题描述】:

我正在开发一个使用 ODBC 从 FileMaker pro 中提取数据的应用程序,我现在成功地从特定表中获取数据

    try
    {
        conn = new OdbcConnection("DSN=FileMaker;Uid=Admin;Pwd=******");
        conn.Open();
        cmd = new OdbcCommand("SELECT * FROM SimpleProductTest");
        cmd.Connection = conn;
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        if ((dr != null) && (dr.HasRows))
        {
            while (dr.Read())
            {
                    temp = dr.GetString(0);
                    Console.WriteLine(temp);
            }
        }

        Console.WriteLine("Done.");
        Console.ReadLine();
    }

现在我想列出 FileMaker Pro 中的所有数据库名称和表名称。根据他们的文档 (http://www.filemaker.com/help/12/fmp/html/func_ref1.31.31.html),函数 DatabaseNames 似乎是正确的。

try
{
    conn = new OdbcConnection("DSN=FileMaker;Uid=Admin;Pwd=******");
    conn.Open();
    cmd = new OdbcCommand("DatabaseNames");
    cmd.Connection = conn;
    dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

    if ((dr != null) && (dr.HasRows))
    {
        while (dr.Read())
        {
            temp = dr.GetString(0);
            Console.WriteLine(temp);
        }
    }

    Console.WriteLine("Done.");
    Console.ReadLine();
}

但是,我得到查询不正确的异常,有人知道如何列出 FileMaker Pro 中的所有数据库和表吗?

提前致谢

【问题讨论】:

  • 如果您通过 ODBC 查询,您需要他们的 SQL 参考。内部函数只能在 Filemaker 应用程序本身中使用。
  • @michael.hor257k 我查看了他们的 ODBC 查询,但没有获取所有数据库或表的命令。感谢您告诉我内部函数只能在 Filemaker 应用程序本身中使用。我会在他们的论坛上查看更多选项。

标签: c# odbc filemaker


【解决方案1】:

想想看,这个函数是无证的。试试FileMaker_Tables(及其伴侣FileMaker_Fields)。这些在内部 ExecuteSQL() 函数中工作。我想它们也可以通过 ODBC 获得,但我不确定(也无法找到 ATM)。

FileMaker_Tables 返回以下列:

  1. 表名
  2. 表ID
  3. 基表名称
  4. 基本文件名
  5. ModCount

信用: http://www.databuzz.com.au/using-executesql-to-query-the-virtual-schemasystem-tables/

【讨论】:

  • 我测试了这个功能,它不起作用。我正在尝试使用 ODBC 目录功能,但到目前为止还没有运气。不管怎样,谢谢你的回答。
  • 这通过 ODBC 对我来说效果很好 - 我希望这显示基表而不是实例,并且有一种方法可以直接访问这些表而不是通过“表实例”
  • 这应该被标记为正确答案。 SELECT * FROM FileMaker_Fields 产生所需的结果。
【解决方案2】:

据我所知,FileMaker 函数仅适用于 FileMaker,包括 FSQL 调用。这是 FileMaker 的 ODBC 指南 (pdf) 的链接:

https://fmhelp.filemaker.com/docs/13/en/fm13_odbc_jdbc_guide.pdf

您可能需要参考第 7 章以获取参考信息。 FileMaker 向 ODBC 公开其关系图中的表出现名称,而不是实际的表名称。您应该能够从那里返回所有可用的表。一般来说,您会知道您尝试访问的数据库或文件名,以及所需的身份验证。

每个单独的文件大致相当于 SQL 用语中的“数据库”。我不知道是否有一个 SQL 语句会返回所有可用的数据库,但是你应该能够从 FM Server 管理控制台看到打开了哪些文件。

【讨论】:

  • "你应该能够从那里返回所有可用的表。" “那里”到底在哪里?
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多