QSqlTableModel и таблица с одинарной кавычкой (MS SQL)

464
25 декабря 2016, 20:39

Всем привет в базе данных присутствуют таблицы, которые содержат одинарные кавычки. Таблицы содержащие кавычку в названии не выгружают данные посредством метода:

QSqlTableModel::select(); 

Не могу понять как с ними работать. Пробовал решать проблему различными способами, например

QString tableName = "My'Table"; // условное название таблицы
//1 tableName.replace("'", "''"); // "My''Table" Данный способ не работает
//2 tableName = QString("[%1]").arg(tableName); "[My'Table]" //Тоже не работает 
tableModel.setTable(tableName);

Подскажите пожалуйста, есть ли способы обойти проблему или же придется редактировать название всех таблиц?

Answer 1

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

INSERT INTO My'Table (field) VALUES(value);

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

Единственное, что можно сделать:

INSERT INTO "My'Table" (field) VALUES(value);

Но кавычки в названиях это плохой тон. Как и пробелы и кириллица.

READ ALSO
Правильное наследование std::exception

Правильное наследование std::exception

Пытаюсь написать свой класс исключений

527
Инициализация basic_string<uint8_t> С++

Инициализация basic_string<uint8_t> С++

Почему инициализация строки uOut происходит некорректно? Прикрепил пример teststr и данные, полученные при отладке

405
Проблема с SendMessage

Проблема с SendMessage

Приветствую!

428
Изменение в таблице базы данных mysql

Изменение в таблице базы данных mysql

Есть таблица Users в безе данных app

397