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