Здравствуйте, столкнулся с проблемой передачи нулевых байтов в Ms Sql Server.
Для примера передаю массив байт в таблицу Ms SQL Server (с полями varchar, binary):
Код:
test_byte[0] := 1;
test_byte[1] := 2;
test_byte[2] := 0;
test_byte[3] := 2;
test_byte[4] := 3;
test_byte[5] := 4;
test_byte[6] := 5;
test_byte[7] := 6;
test_byte[8] := 7;
test_byte[9] := 0;
test1 := @test_byte;
sQue := 'INSERT INTO [EmpTest].[dbo].[Test_AC3] ([name], [data]) VALUES ('+#39+AC_ArrEmpToSQL [i].name+#39+',?)';
if SQLPrepare(sql_stmt, PAnsiChar(sQue), SQL_NTS)=SQL_SUCCESS then
begin
err:=SQLBindParameter(sql_stmt,1,SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY,10, 0, test1,10,nil);
end;
if err=0 then
if SQLExecute(sql_stmt) = 0 then
begin
writeln('work!');
end;
В SQL Server передается значение 0x0102 и дальше ничего, т.к нулевой байт интерпретируется как конец строки.
Подобный вопрос нашел
здесь, но ответа на него нет.
Помогите, пожалуйста, решить данную проблему.