#c #mysql #database #function #insert
#c #mysql #База данных #функция #вставить
Вопрос:
как мне вставить несколько значений из вектора в таблицу базы данных mysql с использованием c .Т.е. mysql c connector не установлен.
мой код
#include cstdlib
#include iostream
#include mysql.h
using namespace std;
MYSQL *connection, mysql;
MYSQL_RES *resu<
MYSQL_ROW row;
int query_state;
Я могу вставить строку вручную следующим образом:
query_state=mysql_query(connection,"insert into test values('boy','girl')");
Но мне нужно прочитать значения из файла или вектора
Спасибо
Комментарии:
1. Добро пожаловать в Stackoverflow. Пожалуйста, отформатируйте код в вашем вопросе с помощью
{}
кнопки.
Ответ №1:
Для этого я бы использовал mysqls prepared statement API. Вы можете увидеть полный пример здесь.
Вы бы просто перебрали векторную привязку к новым значениям и повторно выполнили инструкцию. Это, вероятно, будет более эффективным и менее подверженным ошибкам (сложнее пострадать от атак типа SQL-инъекций), чем ручное построение и повторный запуск запроса.
Другой вариант (не такой хороший IMO, но более простой и может страдать от проблем с внедрением sql, если вы не будете осторожны) — это перебирать вектор, создавая запрос в stringstream, а затем используя буфер stringstream.
Метод string stream выглядит примерно так (непроверенный и, вероятно, глючный):
vector<pair<string,int> > values = get_my_values();
stringstream query;
query<<"insert into test values";
for( vector<pair<string,int> >::iterator it = values.begin() ;
it != values.end();
it )
{
query<<"(""<<mysql_real_escape(connection, it->first.c_str())<<"","<<it->second<<")";
if( it 1 != values.end() ) { query<<","; }
}
query_state=mysql_query(connection, query.str().c_str() );