C#ODBC getSchema(“Tables”)发送结果但getSchema(“Columns”)不返回任何内容

时间:2017-01-04 15:34:23

标签: c# .net odbc schema

我有一个使用DSN的ODBC连接,我正在尝试从中获取表和列(稍后进行操作),但它在早期阶段失败。如果重要,数据库是FairCom C-tree(v 6.11):

OdbcConnection odbcConn = new OdbcConnection("DSN=Ctree;");
odbcConn.Open();

DataTable tblTables = odbcConn.GetSchema("Tables"); 
foreach (DataRow row in tblTables.Rows) //displays them one at a time (works)
     MessageBox.Show(row["TABLE_NAME"].ToString());

DataTable tblColumns = odbcConn.GetSchema("Columns"); // (why is this empty?)
foreach (DataRow row in tblColumns.Rows) //lists nothing
     MessageBox.Show(row["COLUMN_NAME"].ToString() + " : " + row["TABLE_NAME"].ToString());

问题是getSchema(“Tables”)工作正常,所以我知道连接有效,驱动程序状态良好且数据存在。那么为什么getSchema(“Columns”)失败了呢?我也知道数据库中有数据(数百列和数千行)。我很茫然。

思想?

1 个答案:

答案 0 :(得分:1)

不确定这是否适用于Faircom C-Tree SQL,但请尝试获取单个表的列架构。

GetSchema()允许specification of restrictions

var restrictions = new string[] { null, null, "TableName" };
odbcConn.GetSchema("Columns", restrictions);

您可能还必须指定架构名称(例如Sales.SalesPeople)

var restrictions = new string[] { null, "Sales", "SalesPeople" };
odbcConn.GetSchema("Columns", restrictions);