powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество и имена таблиц
8 сообщений из 8, страница 1 из 1
Количество и имена таблиц
    #38322801
kondrakar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS Visual Studio C++ 2010.
Требуется подключить 2 базы данных (MySQL и Access) с помощью ODBC. Как выяснить состав этих баз данных (количество таблиц в базе, их наименования, количество полей в каждой таблице и их наименования)?
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38322819
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз ODBC, значит вызовы SQLTables() и SQLColumns(). Скачай себе Microsoft Data Access SDK,
там будет описание интерфейса ODBC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38322876
kondrakar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Взял из хелпника пример применения функции SQLCOlumn():

#define STR_LEN 128+1
#define REM_LEN 254+1

/* Declare buffers for result set data */

SQLCHAR szCatalog[STR_LEN], szSchema[STR_LEN];
SQLCHAR szTableName[STR_LEN], szColumnName[STR_LEN];
SQLCHAR szTypeName[STR_LEN], szRemarks[REM_LEN];
SQLCHAR szColumnDefault[STR_LEN], szIsNullable[STR_LEN];
SQLINTEGER ColumnSize, BufferLength, CharOctetLength, OrdinalPosition;
SQLSMALLINT DataType, DecimalDigits, NumPrecRadix, Nullable;
SQLSMALLINT SQLDataType, DatetimeSubtypeCode;
SQLRETURN retcode;
SQLHSTMT hstmt;

/* Declare buffers for bytes available to return */

SQLINTEGER cbCatalog, cbSchema, cbTableName, cbColumnName;
SQLINTEGER cbDataType, cbTypeName, cbColumnSize, cbBufferLength;
SQLINTEGER cbDecimalDigits, cbNumPrecRadix, cbNullable, cbRemarks;
SQLINTEGER cbColumnDefault, cbSQLDataType, cbDatetimeSubtypeCode, cbCharOctetLength;
SQLINTEGER cbOrdinalPosition, cbIsNullable;

retcode = SQLColumns(hstmt,
NULL, 0, /* All catalogs */
NULL, 0, /* All schemas */
(SQLWCHAR *) "C", SQL_NTS, /* CUSTOMERS table */
(SQLWCHAR *) NULL, 0); /* All columns */

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {

/* Bind columns in result set to buffers */

SQLBindCol(hstmt, 1, SQL_C_CHAR, szCatalog, STR_LEN,&cbCatalog);
SQLBindCol(hstmt, 2, SQL_C_CHAR, szSchema, STR_LEN, &cbSchema);
SQLBindCol(hstmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);
SQLBindCol(hstmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);
SQLBindCol(hstmt, 5, SQL_C_SSHORT, &DataType, 0, &cbDataType);
SQLBindCol(hstmt, 6, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);
SQLBindCol(hstmt, 7, SQL_C_SLONG, &ColumnSize, 0, &cbColumnSize);
SQLBindCol(hstmt, 8, SQL_C_SLONG, &BufferLength, 0, &cbBufferLength);
SQLBindCol(hstmt, 9, SQL_C_SSHORT, &DecimalDigits, 0, &cbDecimalDigits);
SQLBindCol(hstmt, 10, SQL_C_SSHORT, &NumPrecRadix, 0, &cbNumPrecRadix);
SQLBindCol(hstmt, 11, SQL_C_SSHORT, &Nullable, 0, &cbNullable);
SQLBindCol(hstmt, 12, SQL_C_CHAR, szRemarks, REM_LEN, &cbRemarks);
SQLBindCol(hstmt, 13, SQL_C_CHAR, szColumnDefault, STR_LEN, &cbColumnDefault);
SQLBindCol(hstmt, 14, SQL_C_SSHORT, &SQLDataType, 0, &cbSQLDataType);
SQLBindCol(hstmt, 15, SQL_C_SSHORT, &DatetimeSubtypeCode, 0, &cbDatetimeSubtypeCode);
SQLBindCol(hstmt, 16, SQL_C_SLONG, &CharOctetLength, 0, &cbCharOctetLength);
SQLBindCol(hstmt, 17, SQL_C_SLONG, &OrdinalPosition, 0, &cbOrdinalPosition);
SQLBindCol(hstmt, 18, SQL_C_CHAR, szIsNullable, STR_LEN, &cbIsNullable);
}



Не подскажите, как и откуда теперь извлечь нужную мне информацию?
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38322892
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kondrakar/* Declare buffers for result set data */
Вся информация - здесь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38323042
kondrakar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovkondrakar/* Declare buffers for result set data */
Вся информация - здесь.





Насколько я понял с помощью команд SQLBindCol в таблицу, указанную с помощью hstmt, помещается информация об искомой базе данных (szCatalog, szSchema, szTableName и т.д.). Или не так? Объясните, пожалуйста, "чайнику" на пальцах.
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38323044
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kondrakarОбъясните, пожалуйста, "чайнику" на пальцах.
Эти команды указывают куда и в каком формате класть данные при вызове SQLFetch().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38323077
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kondrakarНасколько я понял с помощью команд SQLBindCol в таблицу, указанную с помощью hstmt, помещается информация об искомой базе данных (szCatalog, szSchema, szTableName и т.д.). Или не так? Объясните, пожалуйста, "чайнику" на пальцах.
Не так.

Ты пришел в школу. В первый день учитель тебе говорит: "Домашнее задание записывать в дневник, решать задачки по математика надо в этой тетрадке а упражнения по языку надо делать в этой тетрадке". Ты хороший ученик и запомнил все инструкции с одного раза. На второй день учитель говорит: "А теперь вот это ваше домашнее задание, идите и делайте". Ты идешь и все делаешь. На третий день: "Идите и делайте", - ты опять идешь и делаешь и так день за днем пока четверть не кончится.
Вот SQLBindCol() это указание учителя в какой тетрадке решать арифметику, а в какой разбирать предложение на части речи. А SQLFetch() это команда "делай домашку на сегодня". Записи в дневнике в этом примере могут быть аналогом для SQLBindParam(), до них ты еще доберешься.
...
Рейтинг: 0 / 0
Количество и имена таблиц
    #38323161
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kondrakar,

У тебя получился уже statement , далее нужно его fetch делать SQLFetch и будешь получать в буфере строки одну за одной таблицы (или что ты там попросил).

После всего нужно statement закрыть и удалить.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество и имена таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]