параметры к эллипсам в C ++ - PullRequest
0 голосов
/ 13 июля 2011

Можно ли передавать параметры разных типов в эллипсах (...)?Я пишу функцию для выполнения SQL-запроса, где я хочу добавить значения в оператор Insert через Ellipse, и мои значения имеют другой тип.

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Как предупреждение, не будьте слишком умны с этим.Не то чтобы я сильно страдал за подобные попытки.:))

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

boost :: format - хороший вариант для этого.Он безопасен для типов и с меньшей вероятностью может вызвать сегрегацию на вас, как переменные аргументы C.

std::string statement = boost::str( 
    boost::format("SELECT tab.* FROM %1% as tab")
        % "my_table_name"
  );

РЕДАКТИРОВАТЬ:

Sqlite обрабатывает привязку параметров самостоятельно, для этого вам не понадобятся переменные аргументы.

Функции sqlite3_bind_ * предоставляют доступ.

Вы можете использовать что-то вроде этого:

const char *sql = "INSERT INTO tab (a,b) VALUES (?1,?2);";
// create statement
sqlite3_bind_int(stmt, 1, 43);
sqlite3_bind_int(stmt, 2, 40000);

Эти функции связывания имеют возвращаемые значения, которые вынадо проверить, я оставлю это тебе.

1 голос
/ 13 июля 2011

Это возможно. Вам потребуется какой-то механизм для определения количества и типов параметров (например, строка формата printf).

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