Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.08.2012, 16:42
enp89 enp89 вне форума
Прохожий
 
Регистрация: 30.08.2012
Сообщения: 1
Репутация: 10
По умолчанию Передача нулевых байтов ODBC API

Здравствуйте, столкнулся с проблемой передачи нулевых байтов в 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 и дальше ничего, т.к нулевой байт интерпретируется как конец строки.

Подобный вопрос нашел здесь, но ответа на него нет.

Помогите, пожалуйста, решить данную проблему.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter