Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сохранить в blob(FB) из VC++? / 4 сообщений из 4, страница 1 из 1
25.01.2005, 12:18
    #32882075
Lora__k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сохранить в blob(FB) из VC++?
Есть массивы float* (различной длины), их нужно сохранить в поля БД(FireBird) типа BLOB.
Код на Visual C++, работаю с классами CDatabase, CRecordset...
Кто-нибудь знает, как это можно сделать?
...
Рейтинг: 0 / 0
25.01.2005, 14:45
    #32882521
Lora__k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сохранить в blob(FB) из VC++?
Люди!!!
Что, никто не знает?!
Очень-очень надо!
...
Рейтинг: 0 / 0
01.02.2005, 12:35
    #32894327
Lora__k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сохранить в blob(FB) из VC++?
Работает!!!
Кому интересно вот код:
Записать массив float* fArray в BLOB поле:
iArLen = (длина массива fArray)*sizeof(float*);
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
void CFBDataBase::SetSQLBlob(const char* szTableName, const char* szFieldName, float* fArray, int iArLen){
        CString szString;
        
        szString.Format(_TEXT("INSERT INTO %s (%s) VALUES (?)"), szTableName, szFieldName);
        
        HSTMT hstmtInsert; 
        RETCODE nRetCode;
        SQLINTEGER nDataParam;
        nDataParam=SQL_DATA_AT_EXEC;
        SQLPOINTER pToken;
    
        nRetCode = SQLAllocHandle(SQL_HANDLE_STMT, m_Database.m_hdbc, &hstmtInsert); 
        
        if (nRetCode == SQL_SUCCESS || nRetCode == SQL_SUCCESS_WITH_INFO){
            nRetCode = SQLPrepare(hstmtInsert, (SQLCHAR*)(const char*)szString, SQL_NTS); 
                    
            if (nRetCode == SQL_SUCCESS || nRetCode == SQL_SUCCESS_WITH_INFO){
                nRetCode=::SQLBindParameter(hstmtInsert,  1 , SQL_PARAM_INPUT, SQL_C_BINARY, SQL_LONGVARBINARY,  0 ,  0 , (SQLPOINTER) 0 ,  0 , &nDataParam);
                if (nRetCode == SQL_SUCCESS || nRetCode == SQL_SUCCESS_WITH_INFO){
                
                    nRetCode = SQLExecute(hstmtInsert); 
                    while (nRetCode == SQL_NEED_DATA) {
                        nRetCode = SQLParamData(hstmtInsert, &pToken);
                        if (nRetCode == SQL_NEED_DATA){
                            SQLPutData(hstmtInsert, (SQLPOINTER)fArray, iArLen);
                        }
                    }

                }
                else    AfxThrowDBException(nRetCode, &m_Database, hstmtInsert);
            }
            else    AfxThrowDBException(nRetCode, &m_Database, hstmtInsert);
        }
        else        AfxThrowDBException(nRetCode, &m_Database, hstmtInsert);
        
        SQLFreeHandle(SQL_HANDLE_STMT, hstmtInsert); 
                
}




Прочитать массив float* fArray из BLOB поля

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
float * __stdcall CFBDataBase::GetSQLBLOB(const char* szSQLstr){

    CRecordset rs(&m_Database);
    CDBVariant v;
    float* fArray;
    
    try
    {
        rs.Open (CRecordset::forwardOnly, szSQLstr, CRecordset::readOnly);

        rs.GetFieldValue ("SPECTR", v);

        fArray = (float*)GlobalLock(v.m_pbinary->m_hData);
        
        GlobalUnlock(v.m_pbinary->m_hData);
        
        rs.Close();
        return fArray;
    }
    catch( CDBException* pEx)
    {
        pEx->ReportError();
        pEx->Delete();
    }

    return  0 ;
}
...
Рейтинг: 0 / 0
29.03.2005, 17:56
    #32987011
AlexandrFyodorov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сохранить в blob(FB) из VC++?
У меня не получается.... Пожалуйста подскажите, в чем ошибка:

вызываю SQLBindParameter (...перечисляю в том же духе...)
функция врзвращает -1 , пишет, что недопустимое значение точности

лана едем дальше

вызываю SQLExecute (hstmtHndl) - опять вернется -1 , а надо SQL_NEED_DATA=99

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


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