Delphi Обновление приложения с Delphi 10 Сиэтла до Delphi 13.3.3 Rio - SQL Столбец базы данных сервера с пробелом (ами), не работающими в ClientDataSet и SimpleDataSet - PullRequest
0 голосов
/ 18 марта 2020

Мы обновляем наше Рабочее приложение Delphi с Delphi 10 Сиэтл до Delphi 13.3.3 Rio - SQL Столбец базы данных сервера с пробелом (ами)

Код, связанный с этой проблемой работает как задумано в Delphi 10 Сиэтле и SQLServer. Проблема в том, что в столбце «Тип изображения» есть пробел в названии. Я ищу, чтобы решить пространство в именах столбцов для ClientDataSet и SimpleDataSet Это относится к другой таблице, которая у нас есть. Я знаю, что параметризованный SQL будет работать в качестве обходного пути.

Следующая вставка SQL Операторы Execute работают так, как задумано.

INSERT INTO tblImages ("Line","Image Type","Image") VALUES ('1','jpg','imageBlobValue')

или

INSERT INTO tblImages ([Line],[Image Type],[Image]) VALUES ('1','jpg','imageBlobValue')

Следующая вставка через ClientDataSet не

//Query
SQLQueryInsert.Cose;
SQLQueryInsert.SQL:='SELECT "Line","Image Type","Image" FROM tblImages';//Oracle & Other SQLs
SQLQueryInsert.SQL:='SELECT  [Line],[Image Type],[Image] from tblImages';//SQLServer
SQLQueryInsert.Open;
//Set Non parameterized values
//DataSet
ClientDataSettblImages.Close;
ClientDataSettblImages.Open;
ClientDataSettblImages.Insert;
ClientDataSettblImages['Line']:='1';
ClientDataSettblImages['Image Type']:='jpg';
ClientDataSettblImages['Image']:='imageBlobValue';
//Apply Updates
ClientDataSettblImages.Post;
If ClientDataSettblImages.ChangeCount > 0 then
  Begin
      ClientDataSettblImages.ApplyUpdates(-1);
End

Если я посмотрю на текстовый вывод SQLMonitor, я вижу следующее:

Error: SQL State: 1, SQL Error Code: 156, Level: 15, Procedure: , Line: 2
Incorrect syntax near the keyword 'Type'.

ClientDataSet & SimpleDataSet имеют ту же проблему. Я вижу, что проблема в столбце с пробелом, который называется «Тип изображения». Вставка через ClientDataSet отлично работает без столбца «Тип изображения». Это либо похоже на ошибку ClientDataSet, либо я где-то упускаю простую деталь.

1 Ответ

0 голосов
/ 18 марта 2020

Похоже, ответ заключается в добавлении следующего параметра в SQLConnection: UseQuoteChar = True. Приложение теперь работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...