Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Преобразование строки в строку для SQL-сервера

Delphi , Базы данных , MSSQL

Преобразование строки в строку для SQL-сервера

Автор: Сергей
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование строки в строку для SQL-сервера

Преобразование строки в строку для SQL-сервера

Зависимости: ???
Автор:       Сергей, nfkazak@inbox.ru, Краснодар
Copyright:   VIP BANK
Дата:        11 сентября 2002 г.
***************************************************** }

function SQL_String(Value: string): string;
var
  i: integer;
  Ch_1,
    Ch_2: Char;
  QM_1,
    QM_2: Boolean;
begin
  QM_1 := False;
  QM_2 := False;
  for i := 1 to Length(Value) do
  begin
    case Value[i] of
      '''': QM_1 := True;
      '"': QM_2 := True;
    end;
  end;
  if QM_1 and (not QM_2) then
  begin
    Ch_1 := '"';
    Ch_2 := '''';
  end
  else
  begin
    Ch_1 := '''';
    Ch_2 := '"';
  end;
  if QM_1 and QM_2 then
  begin
    for i := 1 to Length(Value) do
      if Value[i] = Ch_1 then
        Value[i] := Ch_2;
  end;
  Result := Ch_1 + Value + Ch_1;
end;

Функция SQL_String в языке Delphi, которая принимает строковый ввод Value и возвращает новую строку, подходящую для использования в запросе SQL. Функция пытается эксептить любые специальные символы в входной строке, обёртывая ее в одиночные или двойные кавычки, в зависимости от наличия этих символов в входной строке.

Разбивка кода:

  1. Функция инициализирует два булевых переменных QM_1 и QM_2, чтобы отслеживать, содержит ли входная строка одиночную кавычку (') или двойную кавычку (") соответственно.
  2. Затем функция проходит по каждому символу в входной строке с помощью цикла for.
  3. Для каждого символа функция использует оператор case для проверки, является ли текущий символ одиночной кавычкой или двойной кавычкой. Если это так, она устанавливает соответствующую булевую переменную (QM_1 или QM_2) в значение True.
  4. После прохождения по всем символам функция проверяет, содержат ли обе булевые переменные значения True. Если они содержат, это означает, что входная строка содержит оба типа кавычек, поэтому функция должна поменять их местами.
  5. Затем функция устанавливает две переменные символов Ch_1 и Ch_2, в зависимости от типа кавычки, которая была обнаружена первой (одиночная или двойная).
  6. Если QM_1 имеет значение True, это означает, что входная строка содержит одиночные кавычки, поэтому функция поменяет все вхождения одиночных кавычек на двойные.
  7. Наконец, функция возвращает новую строку, конкатенируя оригинальную входную строку с выбранными открывающей и закрывающей кавычками (Ch_1 и Ch_2).

Пример использования этой функции:

var
  InputString: string;
begin
  InputString := 'Hello, "world"!';
  Result := SQL_String(InputString);
end;

В этом примере будет выдано следующая строка:

'Hello, ""world""!'

Функция имеет некоторые ограничения и потенциальные проблемы:

  • Она только проверяет одиночные кавычки (') и двойные кавычки (", но не другие специальные символы, такие как обратный слеш (\), точка с запятой ; или запятая ,.
  • Если входная строка содержит оба типа кавычек, функция поменяет их местами. Это может привести к неправильным результатам, если оригинальные кавычки использовались намеренно.
  • Функция не правильно обрабатывает символы Юникода, потому что тип строки в Delphi ограничен ASCII.

В современное время рекомендуется использовать более robust решение,such as a dedicated SQL escaping library or a database-specific escape mechanism, instead of relying on manual quote wrapping.

Статья описывает функцию в языке Delphi, предназначенную для преобразования строки в строку, готовую к использованию в SQL-сервере.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: MSSQL ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-06-14 06:25:36/0.007300853729248/2