如何使用 ODBC C# 获取 FileMaker pro 中所有数据库名称的列表
How to get a list of all database names in FileMaker pro using ODBC C#
我正在开发一个使用 ODBC 从 FileMaker pro 提取数据的应用程序,我现在成功地从特定 table 获取数据
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 中的所有数据库名称和 table 名称。根据他们的文档(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 中列出所有数据库和 tables 吗?
提前致谢
想想看,这个函数是没有文档的。尝试 FileMaker_Tables
(及其同伴 FileMaker_Fields
)。这些在内部 ExecuteSQL() 函数中工作。我想它们也可以通过 ODBC 获得,但我不确定(也无法找到 ATM)。
FileMaker_Tables
returns以下列:
- 表名
- 表格ID
- 基表名称
- 基础文件名
- 模数
信用:
http://www.databuzz.com.au/using-executesql-to-query-the-virtual-schemasystem-tables/
FileMaker 函数仅在 FileMaker 中有效,包括 FSQL 调用,据我所知。这是来自 FileMaker 的 ODBC 指南 (pdf) 的 link:
https://fmhelp.filemaker.com/docs/13/en/fm13_odbc_jdbc_guide.pdf
您可能需要参阅第 7 章以获取参考信息。 FileMaker 在其关系图中使用 table 出现名称而不是实际的 table 名称将自身暴露给 ODBC。您应该可以从那里 return 所有可用的 table。一般来说,您会知道您尝试访问的数据库或文件名,以及所需的身份验证。
每个单独的文件大致相当于 SQL 中的一个 "database"。我不知道是否有 SQL 语句将 return 所有可用的数据库,但您应该能够从 FM Server 管理控制台看到打开了哪些文件。
我正在开发一个使用 ODBC 从 FileMaker pro 提取数据的应用程序,我现在成功地从特定 table 获取数据
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 中的所有数据库名称和 table 名称。根据他们的文档(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 中列出所有数据库和 tables 吗?
提前致谢
想想看,这个函数是没有文档的。尝试 FileMaker_Tables
(及其同伴 FileMaker_Fields
)。这些在内部 ExecuteSQL() 函数中工作。我想它们也可以通过 ODBC 获得,但我不确定(也无法找到 ATM)。
FileMaker_Tables
returns以下列:
- 表名
- 表格ID
- 基表名称
- 基础文件名
- 模数
信用: http://www.databuzz.com.au/using-executesql-to-query-the-virtual-schemasystem-tables/
FileMaker 函数仅在 FileMaker 中有效,包括 FSQL 调用,据我所知。这是来自 FileMaker 的 ODBC 指南 (pdf) 的 link:
https://fmhelp.filemaker.com/docs/13/en/fm13_odbc_jdbc_guide.pdf
您可能需要参阅第 7 章以获取参考信息。 FileMaker 在其关系图中使用 table 出现名称而不是实际的 table 名称将自身暴露给 ODBC。您应该可以从那里 return 所有可用的 table。一般来说,您会知道您尝试访问的数据库或文件名,以及所需的身份验证。
每个单独的文件大致相当于 SQL 中的一个 "database"。我不知道是否有 SQL 语句将 return 所有可用的数据库,但您应该能够从 FM Server 管理控制台看到打开了哪些文件。