Начало » Использование СУБД » Microsoft SQL Server » Запись бинарных данных в поле VARBINARY(MAX) (Сохраняются не все данные, а только до 'x0')
Запись бинарных данных в поле VARBINARY(MAX) [сообщение #2156] |
Tue, 02 May 2023 12:22 |
ezus
Сообщений: 2 Зарегистрирован: May 2023
|
Junior Member |
|
|
Добрый день.
Пытаюсь сохранить бинарные данные в поле типа VARBINARY(MAX).
Проблема: сохраняются не все данные, а только до '\x0'.
Программа на с++ в MS VStudio
Основной алгоритм:
CDbFta db; // CDatabase db;
int m_TreeID = ...;
int ipart = 1;
int szPart = 16;
char* buf = (char*)malloc(szData + 1);
... заполнение буфера
sql.Format("INSERT INTO Diagrams (treeId, partNb, size, part) VALUES(%d, %d, %d, ? );", m_TreeID, ipart, szPart);
db.setBindParameters((BYTE*)frBuf, szPart, sql);
db.ExecuteSQL(sql);
Класс CDbFta:
class CDbFta : public CDatabase
{
public:
unsigned char* m_pabImage; // address of the data of the blob //BYTE*
int m_nImageLen; // sizeof the data in the image, in bytes
CString m_sStmt; // looks like "UPDATE MyTable SET myFld=? WHERE idxFld=123"
public:
virtual void BindParameters(HSTMT hstmt);
void setBindParameters(BYTE* pabImage, int nImageLen, CString sStmt);
void clearBindParameters();
void ReadRawData(SQLHSTMT v_SearchHandleIndex, int fieldNb, void* _Raw, SQLINTEGER& RawInd);
};
void CDbFta::setBindParameters(BYTE* pabImage, int nImageLen, CString sStmt)
{
m_pabImage = pabImage; // buffer;
m_nImageLen = nImageLen;
m_sStmt = sStmt;
}
void CDbFta::BindParameters(HSTMT hstmt)
{
SQLINTEGER nLenOrInd = m_nImageLen; // use SQL_NTS only for null-terminated string data
SQLRETURN rc;
if(m_sStmt == "" || m_sStmt.Find("?") == -1) return;
rc = SQLBindParameter(
hstmt, (SQLSMALLINT)1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY,
m_nImageLen, 0, (SQLPOINTER)m_pabImage, m_nImageLen, NULL); // &nLenOrInd );
}
Вроде везде указано BINARY и BYTE*, но все равно '\x0' интерпретируется как конец данных.
Где ошибка, и Что можно с этим сделать?
[Обновления: Tue, 02 May 2023 12:31] Известить модератора
|
|
|
|
|
Переход к форуму:
Текущее время: Thu Nov 28 01:17:51 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01112 секунд
|