@EVOSandru6

Как в с++ правильно вставить переменную в строку sql запроса?

Есть такой запрос:

myQuery->SQL->Text = "SELECT  f_department.CODE, f_department.NAME FROM f_department LEFT JOIN l_modules_22_department ON l_modules_22_department.CODE_2 = f_department.CODE WHERE l_modules_22_department.CODE_1 = '"+ depBlock[i].moduleCode + "'";


Выдает ошибку:

[BCC32 Error] Unit1.cpp(1099): E2085 Invalid pointer addition
Full parser context
Unit1.cpp(1014): parsing: void showDepFormCreate(pack *)


Ошибка исчезает, если я меняю таким образом:

myQuery->SQL->Text = "SELECT  f_department.CODE, f_department.NAME FROM f_department LEFT JOIN l_modules_22_department ON l_modules_22_department.CODE_2 = f_department.CODE WHERE l_modules_22_department.CODE_1 = " + depBlock[i].moduleCode;


Таким образом я теряю одинарные кавычки, что по идее не очень хорошо, помогите разобраться
  • Вопрос задан
  • 2712 просмотров
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Никогда не стройте запросы путем конкатенации!
Даже одинарные кавычки не спасут вас от SQL-инъекций. Ищите, как в вашей библиотеке для mySQL реализовать prepare-execute.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Приведите строки явно к AnsiString:
myQuery->SQL->Text = (AnsiString)"SELECT  f_department.CODE, f_department.NAME FROM f_department LEFT JOIN l_modules_22_department ON l_modules_22_department.CODE_2 = f_department.CODE WHERE l_modules_22_department.CODE_1 = '"
    + depBlock[i].moduleCode + (AnsiString)"'";
Ответ написан
Комментировать
@EVOSandru6 Автор вопроса
Мне такой вариант понравился

myQuery->SQL->Text = String("SELECT  f_department.CODE, f_department.NAME FROM f_department LEFT JOIN l_modules_22_department ON l_modules_22_department.CODE_2 = f_department.CODE WHERE l_modules_22_department.CODE_1 = ") + QuotedStr(depBlock[i].moduleCode);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы