Re: Получение информации о БД из VC++
От: dad  
Дата: 11.02.03 11:35
Оценка: 10 (2)
V>Помогите, пожалуйста, такая проблема: нужно получать програмно из Visual C следующую информацию о внешней базе данных: кол-во таблиц, их название, кол-во строк в таблицах, название и кол-во запросов. На входе название (строка) базы Access, SQL или FoxPro. Буду рад любой подсказке. Заранее спасибо.

надо использовать ADO и его Connetion объект метод OpenSchema, указав парметры что ты хочешь видеть
он вернет рекордсет заполненый запрошенными данными со свойствами установленными
в соответсвиями с используемым провайдером (в случае Access например это Microsoft.Jet.OLEDB.4.0)
Я сам не пользовался этим методом, но в MSDN есть хорошее описание..
Как коннектиться с ADO к БД тут на форуме полно самплов..
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Получение информации о БД из VC++
От: verigo  
Дата: 11.02.03 10:48
Оценка:
Помогите, пожалуйста, такая проблема: нужно получать програмно из Visual C следующую информацию о внешней базе данных: кол-во таблиц, их название, кол-во строк в таблицах, название и кол-во запросов. На входе название (строка) базы Access, SQL или FoxPro. Буду рад любой подсказке. Заранее спасибо.
Re: Получение информации о БД из VC++
От: BAndy Удмуртия birep18.com
Дата: 11.02.03 11:26
Оценка:
Здравствуйте, verigo, Вы писали:

V>Помогите, пожалуйста, такая проблема: нужно получать програмно из Visual C следующую информацию о внешней базе данных: кол-во таблиц, их название, кол-во строк в таблицах, название и кол-во запросов. На входе название (строка) базы Access, SQL или FoxPro. Буду рад любой подсказке. Заранее спасибо.


В SQL это можно получить из системных таблиц.
Для Access & FoxPro можно попробовать рыть доку по ODBC или OLE DB. Если найдешь — будет универсально для любого источника.
Re: Получение информации о БД из VC++
От: algol Россия about:blank
Дата: 11.02.03 11:45
Оценка:
Здравствуйте, verigo, Вы писали:

V>Помогите, пожалуйста, такая проблема: нужно получать програмно из Visual C следующую информацию о внешней базе данных: кол-во таблиц, их название, кол-во строк в таблицах, название и кол-во запросов. На входе название (строка) базы Access, SQL или FoxPro. Буду рад любой подсказке.


Вообще, хорошо бы сначала уточнить способ доступа к БД. А если все равно, то можно предложить OLE DB — есть ATL schema rowset классы (CTables, CTableInfo, CProcedures и т.д.), или ADOX. Там есть аналогичные коллекции Tables, Procedures и т.п.
Re[2]: псевдо код
От: dad  
Дата: 11.02.03 11:49
Оценка:
#ifndef _adoimported_
#define _adoimported_
#import "C:\Program Files\Common Files\System\ADO\msado20.tlb" \
no_namespace rename("EOF", "EndOfFile")
#endif


#define _ADO_PROVIDER_ L"Microsoft.Jet.OLEDB.4.0"

String cnStr.format(L"Provider = %s;Data Source = %s;",_ADO_PROVIDER_,srcString /*db path*/);

_ConnectionPtr cnn;

cnn.CreateInstance(__uuidof(Connection)));
cnn->Open(cnStr,"Admin","",adConnectUnspecified);

_RecordsetPtr rs;
rs = cnn->OpenSchema(adSchemaTables);

while(!(rs->EndOfFile))
{
if (rs->Fields->GetItem("TABLE_TYPE")->Value <> String("VIEW"))
{
String table_name = rs->Fields->GetItem("TABLE_NAME")->Value;
String table_type = rs->Fields->GetItem("TABLE_TYPE")->Value;
}
rs->MoveNext();
}

rs->Close();

cnn->Close();
rs = NULL;
cnn=NULL;
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re: Получение информации о БД из VC++
От: helvic  
Дата: 11.02.03 12:47
Оценка:
Здравствуйте, verigo, Вы писали:

V>Помогите, пожалуйста, такая проблема: нужно получать програмно из Visual C следующую информацию о внешней базе данных: кол-во таблиц, их название, кол-во строк в таблицах, название и кол-во запросов. На входе название (строка) базы Access, SQL или FoxPro. Буду рад любой подсказке. Заранее спасибо.


Самый легкий способ использовать ADO (ActiveX Data Objects). Для этого нужно знать чуточку COM и OLE автоматизацию. Дока по ADO широко освещена в MSDN с многочислеными примерами на С++.
Re: Получение информации о БД из VC++
От: DigitalTaurus США http://resume.zavand.com
Дата: 11.02.03 15:24
Оценка:
Здравствуйте, verigo, Вы писали:

V>Помогите, пожалуйста, такая проблема: нужно получать програмно из Visual C следующую информацию о внешней базе данных: кол-во таблиц, их название, кол-во строк в таблицах, название и кол-во запросов. На входе название (строка) базы Access, SQL или FoxPro. Буду рад любой подсказке. Заранее спасибо.


Напиши мне, дам готовый исходник 40Кб VC++ 6.0.
zavand@mail.ru
Re[2]: Получение информации о БД из VC++
От: verigo  
Дата: 18.02.03 15:19
Оценка:
Здравствуй, DigitalTaurus, хорошая у тебя программа. Жаль только не работает она...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.