5

非変数値を 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 データベースに変数を挿入する方法を知っている人はいますか?

4

5 に答える 5

5

私はそれを機能させるための構文にあまり精通していませんが、必要なものの一般的なバージョンはPrepared Statementsです。プレースホルダーとして変数を持つステートメントを作成します。これらは後で値が提供され、使用されます。

編集: MySQL の Web サイトで、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;
于 2012-11-26T03:48:06.200 に答える
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());

フィールドのタイプが int 、 double 、 float などであることを mySql で指定するだけです。

于 2015-08-18T15:22:48.707 に答える
0

クエリを実行する前に、まずクエリ文字列を作成する必要があります。以下の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を使用してループ内の文字または文字列を読み取る、関連する問題の多くのスレッドを参照してください。

于 2012-11-26T03:54:12.893 に答える
-1
i=0;
for(i=0; i < 100; i++)
{
mysql_query(conn, "INSERT INTO MyTable VALUES ( '"+i+"', 'blue', 'pumpkin')"); 
}

これはうまくいくはずです

于 2012-11-26T03:42:26.183 に答える