我正在开发一个应用程序,使用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 回答
据我所知,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管理控制台打开的文件 .
想想看,这个功能没有记载 . 试试
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/