Я хочу знать точный тип данных (dbtype) столбца таблицы базы данных ms access в c # - PullRequest
0 голосов
/ 05 марта 2012

необходимо знать точную информацию о базе данных и содержащих таблицы, используя c #. база данных - MS access. Я хочу получить полную информацию о таблицах в ней, таких как первичный ключ, максимальная длина, а не ноль столбцов в таблицах в базе данных MS Access и т. д. так что это лучший способ сделать это ...

расширенное спасибо за любую помощь.

другая проблема заключается в том, что getchema дает мне типы данных в числовом виде, например, 130,131. так как я могу использовать их в запросе создать таблицу, они дают ошибку

позвольте мне объяснить, что я пытаюсь сделать. Я хочу воссоздать базу данных, о которой у меня нет информации. Я не знаю ее размера, таблиц, данных или чего-либо еще. На самом деле я преуспел в некоторой степени. Что я сделал, я получил имя БД и создал его с CatalogClass и с getchema (таблицы), я получаю все имена таблиц и создаю их с помощью создания таблицы из C #. Затем имена столбцов с помощью таблицы alter .и теперь я должен дать ему ограничения, которые находятся в БД, которые были предоставлены. Итак, кроме этого метода, который я использовал, есть что-то еще, что я упускаю. Любой простой или лучший способ сделать это. так что он может идти быстрее

вопрос еще открыт

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Полагаю, что все задокументировано по ссылке ниже, попробуйте запустить его пошагово с помощью debug, а затем вы сможете проверить элемент и отобразить все нужные значения.

http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx

Первичный ключ: DataTable.PrimaryKey Максимальная длина, что?Записи?DataTable.Rows.Count Столбцы?DataTable.Columns.Rows

0 голосов
/ 07 марта 2012

Похоже, что вы используете схему для возврата типов полей.Я тестировал, и что-то в этих строках, кажется, возвращает то, что вы хотите.

ADODB.Connection cn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();
string cnStr;

cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\\Docs\\Test.accdb";
string ssql = "Select * From Table1 where 1=2";

cn.Open(cnStr, null, null, 0);

rs.Open(ssql, cn, ADODB.CursorTypeEnum.adOpenKeyset, 
    ADODB.LockTypeEnum.adLockOptimistic, -1);

foreach (ADODB.Field fld in rs.Fields)
{
    Console.WriteLine(fld.Type);
}
Console.Read();

rs.Close();
cn.Close();

Для различных типов это возвращает:

adInteger
adVarWChar = Text
adDate
adInteger
adLongVarWChar = Memo
adVarWChar
adDate
adBoolean
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...