У меня есть база данных MySQL с таблицей, содержащей столбец BINARY(16)
.Двоичные данные, записанные в таблицу MySQL через ODBC, усекаются
Когда я пишу двоичные данные через ODBC из своего приложения на C++, данные обрабатываются как строка с нулевым завершением, т. Е. Она усекается в первом нулевом байте в данных.
В моем приложении C++ я связать unsigned char [16]
массив, используя SQLBindParameter
так:
SQLBindParameter(statementHandler, paramCount, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, MAX_NOTIFICATION_OUT_IP_BIN_LEN, 0, _notificationOutDstIP, MAX_NOTIFICATION_OUT_IP_BIN_LEN, 0);
MAX_NOTIFICATION_OUT_IP_BIN_LEN
является 16.
Как я могу убедиться, что 16 байт записываются в базу данных, даже если двоичные данные содержат значения Null?
OBV, это предполагает, что 'MAX_NOTIFICATION_OUT_IP_BIN_LEN' является' int' ('const' или иным образом); если это макрос, вам сначала нужно назначить его некоторой переменной, которую вы ссылаетесь. – eggyal
Спасибо большое! Теперь это работает :) –