проблема с вставкой нескольких значений в таблицу базы данных mysql с использованием c

#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() );