【问题标题】:C# ODBC getSchema("Tables") sends results but getSchema("Columns") returns nothingC# ODBC getSchema("Tables") 发送结果但 getSchema("Columns") 不返回任何内容
【发布时间】:2017-03-12 12:10:34
【问题描述】:

我有一个使用 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") 失败了呢?我也知道数据库中有数据(数百列和数千行)。我很茫然。

想法?

【问题讨论】:

    标签: c# .net odbc schema


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多