簡體   English   中英

將變量插入mysql表

[英]Inserting a variable into a mysql table

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

例如:

//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')"); 
}

我不想手動輸入100行數據,而是希望能夠使用for循環,並增加一個變量來為我創建行。

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

我不太熟悉使其工作的語法,但您想要的通用版本是Prepared Statements 您創建一個包含變量作為占位符的語句。 這些是以后提供的值並使用。

編輯:您可以在MySQL網站上找到有關在c ++中使用准備語句的更多信息

// ...
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;

你可以做到

   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,double,float等。

在執行查詢之前,您需要先創建查詢字符串。 用字符串類實例替換下面的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參考許多相關問題的線程來讀取循環內的字符或字符串。

這對我有用。

#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;
i=0;
for(i=0; i < 100; i++)
{
mysql_query(conn, "INSERT INTO MyTable VALUES ( '"+i+"', 'blue', 'pumpkin')"); 
}

這應該工作

暫無
暫無

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

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