C ++ sql передать целое число в строку sql - PullRequest
0 голосов
/ 18 декабря 2008

Я построил базу данных в MS Access. Там у меня есть таблица с именем Customers, в которой также есть ячейка с именем Employee type: integer. Я также создал программу на C ++, которая контролирует все данные.

Допустим, у меня есть такая строка:

string sqlString = "SELECT * FROM Customers Where Customers.Employee = '" + id + "' ";

Идентификатор проходит через мою функцию правильно и является целым числом, поэтому я получаю сообщение об ошибке при компиляции, говорящее: «Добавление неверного указателя».

Если я объявлю id как строку, конечно, ошибки не будет, но в моей форме также нет результатов. Если я объявлю в ячейке базы данных Employee как текст и построю свой запрос следующим образом:

string sqlString = "SELECT * FROM Customers WHERE Customers.Employee = 128";

Я получаю результаты, но мне нужно, чтобы Employee в качестве целого числа вызывал внешний ключ из другой таблицы.

Итак, что мне делать с моим запросом, чтобы результаты передавали целое число в качестве параметра через переменную id, чтобы быть в порядке с ячейкой Employee из базы данных, которая также является целочисленной? Есть идеи? Буду очень признателен за помощь.


Как я уже сказал, если я преобразую id в строку, в моей форме не будет результатов, поскольку Employee в базе данных является целым числом. Итак, это:

std::ostringstream buf;
buf << "SELECT * FROM Customers Where Customers.Employee = '" << id  << "' ";
string str = buf.str();

не выполнит работу или любое другое преобразование.

Как я могу передать id как целое число в моем запросе?

Ответы [ 4 ]

3 голосов
/ 18 декабря 2008

Вы можете использовать sprintf, но в C ++ вы можете сделать:

std::ostringstream buf;
buf << "SELECT * FROM Customers Where Customers.Employee = '" << id  << "' ";
string str = buf.str();

(непроверенные)

2 голосов
/ 18 декабря 2008

Вам нужно преобразовать id в строку, тогда ваш первый подход должен сработать.

Смотрите этот вопрос, чтобы узнать, как выполнить преобразование: Альтернатива itoa () для преобразования целого числа в строку C ++?

1 голос
/ 18 декабря 2008

использование

std::ostringstream buf; buf << "SELECT * FROM Customers Where Customers.Employee = " << id ; string str = buf.str();

Это должно работать, пожалуйста, попробуйте '12' --- цитата не должна быть размещена до и после 12

0 голосов
/ 18 декабря 2008

вы можете использовать boost :: format с boost :: str

string = boost::str(boost::format("This is a string with some %s and %d numbers") %"strings" %42);

это должен быть лучший подход, поскольку в конце все переменные будут находиться в одном месте.

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