簡體   English   中英

使用C ++將多個值插入mysql數據庫表時遇到問題

[英]having problem inserting multiple value into mysql db table using c++

如何使用c ++將向量中的多個值插入mysql數據庫表中,即未安裝mysql c ++連接器。

我的代碼

#include cstdlib
#include iostream
#include mysql.h
using namespace std;

MYSQL *connection, mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int query_state;

我可以這樣手動插入行:

query_state=mysql_query(connection,"insert into test values('boy','girl')");

但是我需要從文件或向量中讀取值

謝謝

我會使用mysqls prepareed statement API來做到這一點。 您可以在此處看到完整的示例。

您只需遍歷將向量重新綁定到新值並重新執行該語句的過程。 與手動構造和重新運行查詢相比,這可能會更高效,更不易出錯(更難遭受SQL注入類型的攻擊)。

另一個選擇(不是很好的IMO,但是更簡單,如果您不小心,可能會遇到sql注入問題)是遍歷在字符串流中構造查詢的向量,然后使用字符串流緩沖區。

字符串流方法看起來像這樣(未經測試,可能有錯誤):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM