powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сохранить в blob(FB) из VC++?
4 сообщений из 4, страница 1 из 1
Как сохранить в blob(FB) из VC++?
    #32882075
Lora__k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть массивы float* (различной длины), их нужно сохранить в поля БД(FireBird) типа BLOB.
Код на Visual C++, работаю с классами CDatabase, CRecordset...
Кто-нибудь знает, как это можно сделать?
...
Рейтинг: 0 / 0
Как сохранить в blob(FB) из VC++?
    #32882521
Lora__k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди!!!
Что, никто не знает?!
Очень-очень надо!
...
Рейтинг: 0 / 0
Как сохранить в blob(FB) из VC++?
    #32894327
Lora__k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает!!!
Кому интересно вот код:
Записать массив 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
Как сохранить в blob(FB) из VC++?
    #32987011
AlexandrFyodorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня не получается.... Пожалуйста подскажите, в чем ошибка:

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

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

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

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


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