2012-11-26 186 views
3

我知道如何將非變量值到MySQL表(使用C++):插入變量到MySQL表

例:

//Table person: 
mysql_query(conn, "INSERT INTO MyTable VALUES ( '1', 'John', 'Kennedy')"); 
mysql_query(conn, "INSERT INTO MyTable VALUES ( '2', 'Dave', 'Chappelle')"); 
mysql_query(conn, "INSERT INTO MyTable VALUES ( '3', 'Arnold', 'Schwarzenegger')"); 
//Up to 100 rows of data... 

我想什麼做的是能夠插入一個變量到一個表與C++:

例:

i=0; 
for(i=0; i < 100; i++) 
{ 
mysql_query(conn, "INSERT INTO MyTable VALUES (i, 'FirstName', 'LastName')"); 
} 

而不是必須手動I型n 100行數據, 我希望能夠使用for循環,並增加一個變量來爲我創建行。

有誰知道如何使用C++將變量插入到mysql數據庫中?

回答

-1
i=0; 
for(i=0; i < 100; i++) 
{ 
mysql_query(conn, "INSERT INTO MyTable VALUES ('"+i+"', 'blue', 'pumpkin')"); 
} 

這應該工作

+2

沒有,沒有豆類。 –

5

我不是太熟悉的語法來得到它的工作,但你想要的通用版本是Prepared Statements。您創建了一個以變量作爲佔位符的語句。這些是以後提供的值和使用。

編輯:您可以在MySQL website

// ... 
sql::Connection *con; 
sql::PreparedStatement *prep_stmt 
// ... 

prep_stmt = con->prepareStatement("INSERT INTO test(id, label) VALUES (?, ?)"); 

prep_stmt->setInt(1, 1); 
prep_stmt->setString(2, "a"); 
prep_stmt->execute(); 

prep_stmt->setInt(1, 2); 
prep_stmt->setString(2, "b"); 
prep_stmt->execute(); 

delete prep_stmt; 
delete con; 
+0

請更新「MySQL網站」的鏈接,因爲它不再有效。謝謝 –

0

你需要執行查詢之前,在查詢字符串首先找到在C++中準備好的聲明中使用的詳細信息。將下面的printf替換爲一個字符串類實例來創建一個。你也可以把它放在一個字符串的矢量中。

char queryFmt[]="INSERT INTO myTable VALUES('%d','%s',%s)\n"; 
char color[16]; 
char fruit[32]; 
for(int i=0;i<2;i++) 
{  
    //scanf_s("%s",color); 
    //scanf_s("%s",fruit);  
    std::cin>>color; 
    std::cin>>fruit; 
    printf_s(queryFmt,i,color,fruit); 

} 

請參閱使用scanf函數在一個循環中的字符或字符串來讀取,如果你還不知道,有興趣的任何相關問題上有許多線程。

+1

哇,緩衝區溢出*和* SQL注入漏洞在同一個例子中! –

+0

是的,這只是解決他目前問題的一個暗示,並不是一個真正的解決方案,還有很多需要考慮的事情...... –

2

您可以通過

int var = 10; 
    string str = to_string(var); 
    string requete="INSERT INTO stat(temps) VALUES (\""; 
    requete += str; 
    requete += "\")"; 
    mysql_query(&mysql,requete.c_str()); 

這樣做只是指定MYSQL該字段具有int類型,雙,浮法等

0

這爲我工作。

#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 

#include <mysql_connection.h> 

#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h> 

sql::Driver *driver; 
sql::Connection *con; 
sql::ResultSet *res; 
sql::Statement *stmt; 

/* Create a connection */ 
driver = get_driver_instance(); 
con = driver->connect("tcp://127.0.0.1:3306", "admin", "password"); 

// db name 
con->setSchema("db_name"); 

std::string lookup = "bob" ; 

stmt = con->createStatement(); 
res = stmt->executeQuery("SELECT last_name FROM names_table WHERE first_name = '" + lookup + "'"); 
while (res->next()) { 
    std::cout << res->getString("last_name") << std::endl; 
} 

delete res; 
delete stmt; 
delete con;