Моя память о MySQL C API немного размыта, но IIRC должен выглядеть примерно так:
MYSQL_STMT* stmt = mysql_stmt_init(MYSQL *mysql);
mysql_stmt_prepare(stmt,
"INSERT INTO table1 (table_id, curr_id, cur_ref_id) VALUES (?,?,?)",
len_of_previous_argument);
MYSQL_BIND params[3];
memset(params, 0, sizeof(params));
params[0].buffer_type = MYSQL_TYPE_LONG;
params[1].buffer_type = MYSQL_TYPE_LONG;
params[2].buffer_type = MYSQL_TYPE_LONG;
params[0].buffer = &table_id;
params[2].buffer = &table_id;
mysql_bind_param(stmt, params);
mysql_autocommit(conn, 0);
for ( int i = 0; i < 6406 ; i++) {
params[1].buffer = &i;
mysql_stmt_execute(stmt);
}
mysql_commit(conn);
mysql_stmt_close(stmt);
Вы, очевидно, захотите добавить некоторую обработку ошибок, но это должно дать вамОсновная идея.
Возможно, будет быстрее иметь только один параметр и вместо этого кодировать значения table_id
в строке запроса, но я ленив, и вы, очевидно, знаете, как это сделать (snprintf
следуетиметь "(% d,?,% d)", затем передать результат в mysql_stmt_prepare
, тогда массив params будет только одним элементом).