Здравствуйте, столкнулся с проблемой передачи нулевых байтов в Ms Sql Server.
Для примера передаю массив байт в таблицу Ms SQL Server (с полями varchar, binary):
Код:
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 | 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 и дальше ничего, т.к нулевой байт интерпретируется как конец строки.
Подобный вопрос нашел
здесь, но ответа на него нет.
Помогите, пожалуйста, решить данную проблему.