Mr.Dan |
Отправлено: 05.02.2004, 18:42 |
|
Не зарегистрирован
|
Всем привет!!!
Перешарил кучу форумов, но так и не встречал такой проблемы, которая у меня возникает, вернее никто так и не смог объяснить.
Значит пытаюсь работать с ODBC. Конфигурация такая: Windows XP, С++Builder 6.0.
Что делал:
1) implib.exe /a odbc32.lib windows\system32\odbc32.dll
implib.exe /a odbccp32.lib windows\system32\odbccp32.dll
2) Добавил эти либы в проект через меню Project->Add to Project...
3) В прогу включил нужные заголовки:
#include
#include
#include
4) В проге пишу такой код:
CODE | const short SQL_MAX=255;
UCHAR szDSN[ SQL_MAX+1 ];
UCHAR szDescription[ 256 ];
short wDSNLen;
short wDesLen;
int retCode;
SQLHENV hEnv=NULL;
AnsiString DSNName;
SQLAllocEnv( &hEnv );
retCode = SQLDataSources( hEnv, SQL_FETCH_FIRST,
szDSN, SQL_MAX+1, &wDSNLen,
szDescription, 256, &wDesLen ); |
При запуске этот код отрабатывает нормально, но если я пытаюсь добавить цикл, в котором будут последовательно перебираться DSN, т.е делаю так:
CODE | const short SQL_MAX=255;
UCHAR szDSN[ SQL_MAX+1 ];
UCHAR szDescription[ 256 ];
short wDSNLen;
short wDesLen;
int retCode;
SQLHENV hEnv=NULL;
AnsiString DSNName;
SQLAllocEnv( &hEnv );
retCode = SQLDataSources( hEnv, SQL_FETCH_FIRST,
szDSN, SQL_MAX+1, &wDSNLen,
szDescription, 256, &wDesLen );
while( retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO )
{
DSNName = (AnsiString)((char *)szDSN);
retCode = SQLDataSources( hEnv, SQL_FETCH_NEXT,
szDSN, SQL_MAX+1, &wDSNLen,
szDescription, 256, &wDesLen );
}
SQLFreeEnv( hEnv ); |
То уже в этом случае программа ругается: Access violation at address...
Но почему?! Без цикла отрабатывает, а в цикле ругается??? Более того пробовал использовать другие ф-ии ODBC API, там примерно такая же ситуация, только ругалось уже более конкретно: Access violation at address...in module 'ODBC32.DLL'. Никак не могу понять... или библиотека импорта криво построилась или на этом мысли заканчиваются.....
Хэлп!!! Помогите, а то уже совсем ничего не понимаю.......что, где я сделал неправильно?!
Заранее благодарен.
|
|
olegenty |
Отправлено: 18.02.2004, 10:13 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Ответ не совсем в тему, но можешь посмотреть вот эти компоненты. Они бесплатны и с исходниками. По крайней мере, сможешь исходники посмотреть.
http://www.torry.net/db/direct/db_odbc/modbc.zip
Когда-то я ими пользовался. Ничего, работали.
|
|
|