2011-04-13 37 views
1

如何從矢量插入多個值到MySQL數據庫表使用c + + I.e mysql C++連接器未安裝。有問題插入多個值到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')"); 

但我需要從文件或矢量值讀取

感謝

+0

歡迎#1。請使用'{}'按鈕在您的問題中格式化代碼。 – 2011-04-13 01:15:39

回答

1

我'使用mysqls準備語句API來做到這一點。 您可以看到一個完整的示例here

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

另一種選擇(不如IMO好,但更簡單,如果不小心可能會遇到sql注入問題)是循環遍歷在stringstream中構造查詢的向量,然後使用stringstream緩衝區。

字符串流的方法,看起來有點像這樣(未經測試,可能是電瓶車):

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

@彼得史密斯感謝這非常有幫助。 – airMan 2011-04-15 21:17:52