Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как читать BLOBы из поля базы??

Аноним
Использую ODBC
читаю в CDBVariant.m_pbinary методом CRecordset::GetFieldValue с SQL_C_BINARY...
Чтоб посмотреть что прочитал, пишу в файл
file.Write(CDBVariant.m_pbinary->m_hData, CDBVariant.m_pbinary->m_dwDataLength);
В итоге получаю всякую фигню - то ли не оттуда читаю, то ли пишу не туда...
А вообще у меня задача прочитать и вывести на экран картинку....
Вобщем, помогите разобраться - а то у меня проект стоит..
Пробывал использовать RFX - то же самое=((
730
16 октября 2001 года
tigrisha
2 / / 20.12.1999
730
16 октября 2001 года
tigrisha
2 / / 20.12.1999
А ты попробуй вообще классы типа CDataBase и CRecordset не использовать. Все тоже самое можно сделать через ODBC SDK. Будет немного сложнее но зато гибкость появится
1.7K
18 декабря 2001 года
Wraith
2 / / 20.08.2000
{
SQLCHAR ConnStrOut[MAXBUFLEN];
SQLSMALLINT cbConnStrIn = 0;
SQLSMALLINT cbConnStrOut = 0;
SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={SQL Server};SERVER=WEB;UID=sa;PWD=;DATABASE=WEBLINK;";
SQLSMALLINT ConnStrInLength = strlen("DRIVER={SQL Server};SERVER=WEB;UID=sa;PWD=;DATABASE=WEBLINK;");

hdbc = SQL_NULL_HDBC;

// Allocate environment handle
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// Set the ODBC version environment attribute
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// Allocate connection handle
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// Connect to data source
retcode = SQLDriverConnect (hdbc,NULL , ConnStrIn , ConnStrInLength, ConnStrOut,
MAXBUFLEN, &cbConnStrOut, SQL_DRIVER_NOPROMPT);
}
}
}

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
SQLDisconnect(hdbc);

}

Vmesto CRecordser.
Аноним
потому что ты используешь не адрес блока а адрес виндового хандлера блока памяти, когда пишешь в файл. используй GlobalLock для того чтобы получить адрес памяти.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог