首页 文章

如何使用ODBC C#获取FileMaker pro中所有数据库名称的列表

提问于
浏览
0

我正在开发一个应用程序,使用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中列出所有数据库和表格?

提前致谢

2 回答

  • 6

    据我所知,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管理控制台打开的文件 .

  • 1

    想想看,这个功能没有记载 . 试试 FileMaker_Tables (和它的同伴 FileMaker_Fields ) . 这些工作在内部ExecuteSQL()函数中 . 我想它们也可以通过ODBC获得,但我不确定(并且无法找到ATM) .

    FileMaker_Tables 返回以下列:

    • TableName

    • 表ID

    • BaseTableName

    • BaseFileName

    • ModCount

    图片来源:http://www.databuzz.com.au/using-executesql-to-query-the-virtual-schemasystem-tables/

相关问题