2017-01-04 15 views
0

У меня есть соединение ODBC с использованием DSN, и я пытаюсь получить из него таблицы и столбцы (для управления позже), но это неудачно на ранней стадии. База данных представляет собой FairCom C-дерево (v 6,11), если это имеет значение:C# ODBC getSchema («Таблицы») отправляет результаты, но getSchema («Столбцы») ничего не возвращает

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 («Таблицы») работает просто отлично, так что я знаю, что соединение работает, водители находятся в хорошей форме и что данные существуют. Итак, почему getSchema («Столбцы») не удается? Я также знаю, что в db есть данные (сотни столбцов и тысячи строк). Я в недоумении.

Мысли?

ответ

1

Не уверен, что это работает с SQL-кодом 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);