• ベストアンサー

変数内のデータをmysqlのデータベースへ書き込むサンプルなのですが、うまくinsertされません。

 回答者様たちのおかげで、mysqlをVC++から呼び出すことはできるようになりました。ありがとうございます。  ネットで拾ってきたサンプルを修正し、変数内のデータをtotalというテーブルに書き込んでいくプログラムを書いてみました。  しかし既存のテーブル内のデータは読み込み、表示はできるのですが、書き込みがうまくいきません。  以下、私が書いたソースです。 #include <cstdlib> #include <iostream> #include "windows.h" #include "mysql.h" MYSQL *mysql; MYSQL_RES *results; MYSQL_ROW record; static char *server_options[] = { "mysql_test", "--defaults-file=my.cnf" }; int num_elements = sizeof(server_options)/ sizeof(char *); static char *server_groups[] = { "libmysqld_server", "libmysqld_client" }; //メイン int main(int argc, char **argv) { //mysql_server_init(num_elements, server_options, server_groups); mysql = mysql_init(NULL); //mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "libmysqld_client"); //mysql_options(mysql, MYSQL_OPT_USE_EMBEDDED_CONNECTION, NULL); char query[256]; int year = 2007; int manth = 2; int day = 2; int hour = 12; int min = 33; int group = 1; int man = 1; char name[] = "紙コップ"; int num = 1; int tanka = 900; int cre = 1; int check; memset(query, '\0', 256); mysql_real_connect(mysql, NULL,"root","パスワード", "rest", 0,NULL,0); if(mysql_errno(mysql) != 0) { fprintf(stderr, "Error: %s\n", mysql_error(mysql)); system("PAUSE"); return 0; } mysql_query(mysql, "SELECT * FROM total"); if(mysql_errno(mysql) != 0) { fprintf(stderr, "Error: %s\n", mysql_error(mysql)); system("PAUSE"); return 0; } results = mysql_store_result(mysql); if(results == NULL || mysql_errno(mysql) != 0) { fprintf(stderr, "Error: %s\n", mysql_error(mysql)); system("PAUSE"); return 0; } /* MYSQL_FIELD *fd; for(int i = 0; fd = mysql_fetch_field(results); i++) { printf("%d %s \n", i, fd->name); } while((record = mysql_fetch_row(results))) { printf("%s %s\n", record[0], record[1]); printf("%s, %s, %s \n", record[2], record[3], record[4]); } */ sprintf(query, "insert into total values (%d, %d, %d, %d, %d, %d, %d, %s, %d, %d, %d)",year, manth, day, hour, min, group, man, name, num, tanka, cre); mysql_query(mysql, query); mysql_free_result(results); mysql_close(mysql); mysql_server_end(); system("PAUSE"); return 1; } データベース名はrest  テーブル名はtotal です。 /**/でかこってある部分は、拾ってきたサンプルで、コメントを外し、 すでにデータが入っているテーブルを指定してやれば、 指定したテーブルのデータを引っ張ってくるので、VC++とmysqlが繋がっていないということはないと思います。 totalのフィールドの数も、書き込みたい変数の数と一致しています。 totalの各フィールドのタイプは、変数nameの紙コップを書き込みたいやつだけVARCHAR型でそれ以外はINT型です。 検索並び替え等はまだ考えてないのでKEY指定はしておりません。 ご指導よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

#2です。 「バイナリに変換」というより、文字コードの問題ではないでしょうか? VC++のコードそのままだと、Shift-JISになるので、これがMySQLの設定と合っていないのだと思います。 エラーの感じから、ただの7bitのASCIIになっているのかなという気がします。 これをShift-JISにするか、あるいはEUC,utf-8等にして、VC側でも変換してやるなどすればうまくいきそうな気がします。 具体的な設定方法ですが、当方、PostgreSQLのためよくわかりません。 「MySQL 文字コード」等で検索するといくつかヒットします。参考になるといいのですが。

curve_2008
質問者

お礼

mysql_query(mysql,"SET NAMES SJIS"); mysql_query(mysql, "insert into total values (\"オパオパ\")"); mysql_query(mysql,"SET NAMES SJIS"); 今から飛ばすオパオパはSJISだから余計なことはするな!  という感じのクエリ様です。 いちいちこんなの書かなくていいように設定したはずなのに、 my.ini書き換えたりとか、なんの為の設定だったのだろう。 とりあえずこの一行を足したら幸せになれました。 回答者の皆様、おかげで問題解決しました。 ありがとうございました。 これでcsvからデータを読み込んでデータベースに放り込んでいくというプログラムが完成しました。

curve_2008
質問者

補足

 これが今の私のmysqlのコード設定なのですが、 何か問題がありますでしょうか? インストールした段階でsjisに設定し、 その後my.iniファイルの ・client ・mysql ・mysqld の3か所に default-character-set=sjis を加え、 mysqldのところには skip-character-set-client-handshake を追加。 | character_set_client | sjis | character_set_connection | sjis | character_set_database | sjis | character_set_filesystem | binary | character_set_results | sjis | character_set_server | sjis | character_set_system | utf8 そうするとこうなったのですが、化けます。 http://wota.jp/ac/?date=20061011 http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_40 一つ目のアドレス先のサイトで詳しく文字化け対策の説明がなされていて、それによると全部utf8にしてしまえば問題ないと書かれていました。 二つ目のアドレス先では私の設定では文字化けはおきない、とまで書かれておりました。 他のサイトも見てみましたが、今の私の設定で問題ないと書いてあるところもあれば、ujisにするところや、cp932にしているところさまざまです。 私の環境では、いったいどれをどうすればいいのでしょうか? OSはvista、VC++2008でソースを書いてます。 mysqlのverはmysql-5.0.45-win32です。 そして、my.iniファイルのdefault-character-setのところを変更しても、mysqlに反映されておらず、utf8やcp932に書き換えた場合でもsjisとして設定されたままという事態も起きていますので、 合わせてお答えしていただければ非常に助かりますのでお願いいたします。

その他の回答 (2)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

エラーは見れないのでしょうか? >sprintf(query, "insert into total values (%d, %d, %d, %d, %d, %d, %d, %s, %d, %d, %d)",year, manth, day, hour, min, group, man, name, num, tanka, cre); >mysql_query(mysql, query); の後に、 if(mysql_errno(mysql) != 0) { fprintf(stderr, "Error: %s\n", mysql_error(mysql)); system("PAUSE"); return 0; } を入れてみるとか。

curve_2008
質問者

補足

 titokani様、回答ありがとうございます。 投稿する際、このエラー確認部分は実際に書いてはいたのですが コードがみずらいかなと思い省略しておりました。 申し訳ないです。今現在出ているエラーは、以下のものです。 Error: Incorrect string value: '\x8E\x86\x83R\x83b...' for column 'name' at row 1 紙コップが紙コップとして書き込まれていないようです。 今、上記エラーの解決策をリファレンスで確認中ですが、 リファレンスのわかりやすいんだか、わかりずらいんだかよくわからないあの書き方に苦戦中です。 よろしければ、解決方法、もしくは何かしらのアドバイス等いただければありがたいのでよろしくお願いいたします。

  • nmktksk
  • ベストアンサー率36% (75/208)
回答No.1

SQLでは文字(%s)は「'」か「"」で囲む必要があると思います。 確認はしてません。

curve_2008
質問者

お礼

回答ありがとうございます。 nmktsk様の言うとおり、VC++経由ではなく、SQLで直接insertするときには文字列は””で囲う必要があります。 忘れてました。気がつかなかったです。 char name[] = "紙コップ"; の部分を char name[] = "\"紙コップ\""; に変更いたしました。 そうしたところ、SQLの構文エラー表示はなくなりましたが、 別のエラーが出てきました。 ”紙コップ”が、バイナリに変換されてしまっているようです。 これは、VCやmysqlの書き方というより、設定レベルの話のような気がしてきました。 ですので、”から”は変換せずに放りこめ! とアプリケーションに命令する方法を教えていただければ ありがたいです。 よろしくおねがいします!

関連するQ&A

  • c言語でMySQLを利用するときのエラー

    C言語でMySQLを操作することを考えて勉強を始めたばかりなのですが、データベースのフィールドの数を表示するプログラムを作ったところ、エラーが出てしまいます。以下がコードです。 #include<windows.h> #include<stdio.h> #include<mysql.h> int main(int argc, char **argv) { MYSQL *mysql; MYSQL *con; MYSQL_RES *result; mysql = mysql_init(NULL); if(NULL==mysql){ printf( "SQLの初期化に失敗しました.\n" ); exit(1); } const char *sever ="localhost"; const char *user = "root"; const char *password = "*******"; const char *database = "features"; unsigned int portnumber = 0; unsigned int num_fields; con = mysql_real_connect(mysql, sever, user, password, database, portnumber, NULL, 0); if(NULL==con) { printf( "SQLのオープンに失敗しました.\n" ); exit(1); } result = mysql_store_result( mysql ); num_fields = mysql_num_fields( result ); printf("fieldの数は%dです。",num_fields); mysql_close( mysql ); printf( "SQLをクローズしました.\n" ); return 0; } ビルドは正常終了するのですが、 これでF5を押すと、 mysql.exe の 0x5b8a8f04 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000048 を読み込み中にアクセス違反が発生しました とエラーが、Ctrl+F5を押すと、 mysql.exe は動作を停止しました と出る状態です。 試しにmysql.exeを直接起動してみるとやはり、エラーの画面が出ます。 MYSQL_RES *result; unsigned int num_fields; result = mysql_store_result( mysql ); num_fields = mysql_num_fields( result ); printf("fieldの数は%dです。",num_fields); を消せば、正常に終了して、 SQLをクローズしました. と出ます。 環境は、Windows 7 ultimate、OSは64bit 開発環境は、Microsoft Visual C++ 2010 Express です。 MySQLはMicrosoft Visual C++ 2010 Expressで動くように32bit版を入れています。 どこが原因でエラーが起こっているのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLが動かない(テーブルレコード全表示したい

    初心者です。 いろいろ検索して改善していったつもりですが、なぜ動かないのかどうしてもわからないところがあったので質問させていただいてます。 /* サーバーへの接続 */ $link=mysql_connect($server,$user,$passwd); /* データベース内のテーブルの名前を$tablesに配列で格納 */ $STS = "SHOW TABLE STATUS"; $mytables = mysql_query($STS); while($r = mysql_fetch_array($mytables, MYSQL_ASSOC)){ $tables[] = ($r["Name"]."<br>\n"); } /* 全テーブルのレコードを全てプリント */ foreach($tables as $value){ $results = mysql_query("select * from " . $value, $link); while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) { print_r($row); print("<br>\n"); } } mysql_close($link); foreachの部分を for($i = 0; $i < 2 /*$tables[$i] != 0*/; $i++){ $results = mysql_query("select * from " . $tables[$i], $link); $row = mysql_fetch_array($results, MYSQL_ASSOC); print_r($row); } でもやってみました。 これを利用して、何とか表形式でデータベースのテーブルのレコードをwebページに出力させようと思っています。 実行するとprint_r($row)の出力がでず、いろいろ試してみた結果、$resultsもしくは$rowに問題があることがわかりました。 var_dump($row); でNULLが出力されました。 var_dump($results); もやったのですが、うろ覚えなのでここには書きません。 $results = mysql_query("select * from gutaiteki_table", $link); としたら動いたので、select * from の後に変数を続けているからだめなのかなと思いましたが、私にはどうにもしようがありません。 これを正常に動作させる方法、他にうまいやり方があればその方法を教えてほしいです。 (私はデバッグのやり方がわからないので、「改変してwebのページを更新する」というのを繰り返してプログラムを作成していますが、他に方法があればそれも併せてご意見ほしいです。これは余裕があったらで構いません。)

  • insert、selectのやり方を教えて下さい

    こんにちは。 すみません、ネットで調べていたのですが、見当もつかなかったので、教えていただけないでしょうか? ---------------------------------------------- テーブル1:t1 c1 char(254)not null unique,c2 int,c3 int あ,3,null い,4,null う,2,null ---------------------------------------------- テーブル2:t2 c1 char(254)not null unique,c2 int,c3 int い,null,9 う,null,12 え,null,13 お,null,11 ---------------------------------------------- 上記の2つのテーブルがあるとします。そのときに、下記のような結果を新たなテーブルに出力するには、どのような、insert、selectが良いのでしょうか? ---------------------------------------------- テーブル3:result c1 char(254)not null unique,c2 int,c3 int あ,3,null い,4,9 う,2,12 え,null,13 お,null,11 ---------------------------------------------- 困っています。お願いします。

  • mysqlデータが入れられない

    現在、パールとMysqlを組み込みインターネットに公開する事を目指して勉強してます。 テーブルを作成し、サーバーに入れ様とした時に他のテーブルは挿入されたにもかかわらず下記のプログラムはシンタックスエラーを表示します。 新しい試みとして文字の指定にtextを使ったのですがそこがどうもおかしいようです。 どうかたすけていただけないでしょうか? create table jinzai_hkn_table( iput_charg_id int not null, hkn_charg_id int not null, #派遣営業者ID kyu_id char(2) not null, #募集職業分類ID j_dai_id char(10) not null, #ジャンル大分類ID j_tiu_id char(10) not null, #ジャンル中分類ID j_siou char(10) not null, #ジャンル小分類ID jin_hkn1 char(30) not null, #求職スピード(募集スピjin_hkn2 char(60) null, # jin_hkn3 char(60) not null, #求職タイトル(求人タイjin_hkn4 text(800) null, #求職者コメント(人事コ jin_hkn5 char(100) not null, #派遣管理番号 jin_hkn6 char(40) not null, #希望採用形態(採用形jin_hkn7 char(20) not null, #性別(性別) jin_hkn8 char(20) not null, #希望勤務場所(県) jin_hkn9 char(20) not null, #希望勤務場所(市町村) jin_hkn10 char(40) not null, #最終学歴(学校名) jin_hkn11 char(40) not null, #最終学歴(専攻) jin_hkn12 char(20) null, #最終職歴 jin_hkn13 char(20) null, #最終職歴勤続年数 jin_hkn14 char(60) null, #最終職歴職種 jin_hkn15 char(100) null, #資格1 jin_hkn16 char(100) null, #資格2 jin_hkn17 char(100) null, #資格3 jin_hkn18 char(200) null, #得意な事・一芸 jin_hkn19 char(200) null #備考 );

  • Mysql delete 参照

    恐れ入ります。 Mysql で、2つのテーブルがあり、 1つが1000レコード 2つめが1500レコードあります。 プライマリーコードを参照して、 1つめの1000レコードに、2つめのテーブルを揃えたいのですが、 うまくいきません。 delete from t2 left join t1 on t2.num=t1.num where t1.num IS NULL; としましたがうまくいきませんでした。 1つめのテーブルのレコードにマッチしたもの以外を2つめのテーブルから削除みたいな感じです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • csvファイルの実績データをC言語で解析するのですが...

    C言語を学び始めたばかりなのに、csvファイルの実績データでフィールドが15あり、レコード数が1000000近くあるファイルの15番目のフィールドを足し合わせて、出力するということをやっているのですが、まだまだわからないことだらけです。 1レコード目がカラム名なので2レコード目から足し合わせるんですがそこのところもよくわからずじまいで... 一応、書いたプログラムが #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp; char buffer[50],*p; int cnt, num, sum; fp = fopen("j0.csv","r"); if(fp == NULL){ printf("ファイルが開けませんでした。\n"); exit(-1); } while(fgets(buffer,fp) != NULL){ p = strtok(buffer,","); cnt = 1; while(p!=NULL){ num = atoi(p); printf("%d:%d,",cnt,num); p = strtok(NULL,","); cnt++; if(cnt==15) sum=sum+num } printf("\b\b \n"); } printf(%d \n",num); fclose(fp); return(0); } と書いたんですが、ぜんぜんな状態です。誰かご教授願えませんか?

  • 沢山の変数を扱う時、うまく出来ません・・。

    変数が沢山ある時、エラーが起こったかどうかは どうやって判断したらいいんでしょうか。 今50個位変数名があるとします。 今は端おって5つにします。 int a,b,d; char c,e a = (int *) calloc(500,sizeof(int)); b = (int *) calloc(200,sizeof(int)); c = (char *)calloc(700,sizeof(char)); d = (int *) calloc(400,sizeof(int)); e = (char *)calloc(100,sizeof(char)); if(a==NULL || b==NULL || c==NULL || d==NULL || e==NULL)   printf("エラー発生\n"); こうやって50個もif文の中にいれたら大変ですよね。 変数名も長いですし。うまく1つでもエラーが起きたら全体がエラーになるように出来ませんかね? 自分としてはこういう風に考えたんですけど int sum=1; a = (int *) calloc(500,sizeof(int)); sum*=a; b = (int *) calloc(200,sizeof(int)); sum*=b; c = (char *)calloc(700,sizeof(char)); sum*=c; d = (int *) calloc(400,sizeof(int)); sum*=d; e = (char *)calloc(100,sizeof(char)); sum*=e; if(sum==0)   printf("エラー発生\n"); コレくらいしかないですかね?

  • MYSQLにINSERTできません。

    見よう見まねでやっている超初心者です。 恥を忍んで質問させて頂きます。 古いPHP(2003年ごろ)関連書籍に下記のような include.phpファイルがあるのですが、DB接続失敗、クエリ発行エラー等の エラー表示は出ないのですが(65行目位の、管理者パスワードチェック : _chkPass)でパスワードがMYSQLにINSERTできません。 PHPバージョンの違いなのでしょうか(私のはPHPV5 XAMPPです。) 色々試したりMYSQLの確認をしたのですが、どこがイケないのか、 どこをどう直したらいいのか全く分かりません。 このプログラムに不具合は無いのか?あったとしたらどう直したら動くようになるのか? わかる方どうかご教授の程よろしくお願い致します。 具体的にご教授頂けると大変助かります。 <?php putenv("TZ=JST-9"); define( "_DB_SERVER", "localhost"); define( "_DB_NAME", "cgiweb" ); define( "_DB_UID", "root" ); define( "_DB_PASS", "" ); //--------------------------------------------------------- // DB接続 : _dbConnect //--------------------------------------------------------- function _dbConnect(){ //DB接続 $_conn = mysql_connect( _DB_SERVER, _DB_UID, _DB_PASS) or die('DB接続失敗 = ' . mysql_error()); //DB選択 mysql_select_db( _DB_NAME, $_conn) or die('DB選択失敗 = ' . mysql_error()); return( $_conn ); } //--------------------------------------------------------- // DB切断 : _dbDisconnect //--------------------------------------------------------- function _dbDisconnect( $_conn ){ //DB切断 mysql_close($_conn); } //--------------------------------------------------------- // クエリ発行 : _query //--------------------------------------------------------- function _query( $_conn, $_query ){ $_result=mysql_query($_query,$_conn) or die('クエリ発行エラー = ' .mysql_error()); return( $_result ); } //--------------------------------------------------------- // FETCH実行 : _fetchArray //--------------------------------------------------------- function _fetchArray( $_result ){ $_row = mysql_fetch_array($_result,MYSQL_ASSOC); return( $_row ); } //--------------------------------------------------------- // 結果セット開放 : _freeResult //--------------------------------------------------------- function _freeResult($_result){ mysql_free_result($_result); } //--------------------------------------------------------- // 管理者パスワードチェック : _chkPass // 引数:コネクション // チェック対象パスワード // 戻値:_OK or _NG //--------------------------------------------------------- function _chkPass( $_conn, $_input_pass ){ $_err_str = ""; if( ! $_input_pass ){ //パスワード未設定なら入力画面を表示 $_err_str = "パスワードを入力してください"; } else{ //パスワードがあるなら店舗マスタの内容と比較 $_result = _query( $_conn, "SELECT tenpo_pass FROM tenpo_mst" ); $_row = _fetchArray( $_result ); if( $_row ){ //レコードがあればチェック if( $_input_pass != $_row['tenpo_pass'] ){ //認証NGなので、入力画面を再表示 $_err_str = "パスワードが誤っています"; } }else{ //レコードがなければ入力されたパスワードでレコード作成 $_sql = ""; $_sql .= "INSERT INTO tenpo_mst ("; $_sql .= " tenpo_name,"; $_sql .= " tenpo_pass,"; $_sql .= " zei_kbn,"; $_sql .= " zeiritsu,"; $_sql .= " zei_kirisute_kbn,"; $_sql .= " order_status"; $_sql .= " ) VALUES ("; $_sql .= " '',"; $_sql .= " '" . addslashes($_input_pass) . "',"; $_sql .= " 2,"; $_sql .= " 0,"; $_sql .= " 0,"; $_sql .= " 0"; $_sql .= " )"; _query( $_conn, $_sql ); } _freeResult( $_result ); } //入力画面表示の場合 if( $_err_str != "" ){ echo "<HTML>\n"; echo "<HEAD>\n"; echo "<TITLE>管理者認証</TITLE>\n"; echo "</HEAD>\n"; echo "<BODY>\n"; echo "<CENTER>\n"; echo "<FONT COLOR=RED SIZE=5>管理者認証</FONT>\n"; echo "<HR>\n"; echo "${_err_str}<BR><BR>\n"; echo "<FORM ACTION=\"mnt_menu.php\" METHOD=\"POST\">\n"; echo "<FONT COLOR=RED SIZE=2>※記号を除く半角小文字8文字以内</FONT><BR>\n"; echo "パスワード:<INPUT TYPE=\"password\" NAME=\"post_pass\" MAXLENGTH=8>\n"; echo "<INPUT TYPE=\"submit\" VALUE=\"送信\">\n"; echo "</FORM>\n"; echo "<HR>\n"; echo "</CENTER>\n"; echo "</BODY>\n"; echo "</HTML>\n"; _dbDisconnect($_conn); exit; } } ?> 以下省略しました。

    • ベストアンサー
    • PHP
  • MYSQLへのデータサイズの大きなデータの挿入

    C APIを用いて、MYSQLにテキストファイルの中身を格納したいと考えています。 以下のプログラムのように一度ファイルの中身をchar型配列に書き出し、配列の中身をクエリにコピーというようにすると、ファイルの大きさに合わせて、非常に大きな配列を確保しなければならないと思います。 int main(void){ MYSQL mysql; char query[1000]; char buf[1000]; FILE *fp; fp = fopen("test.txt", "r"); mysql_init(&mysql); if(!mysql_real_connect(&mysql,ホスト名,ユーザ名,パスワード,DB名,0,NULL,0)){ //エラー処理 } fread(buf, sizeof(char), sizeof(buf), fp ); sprintf(query, "insert into DB名 values(buf)); mysql_real_query(&mysql, query, strlen(query)); } これではメモリの無駄遣いなので、他の方法として、 1.データを分割して複数回に分けて挿入する 2.テキストファイルから直接読み込む を考えました。 しかし 1.は方法が分からず、 2.はリダイレクトを使えばできると思ったのですが、リダイレクトでは  テキストファイルにSQLコマンドも記入しておく必要があると思うの で、今回の方法には合いません。 MYSQLのフィールドにC言語から大きいデータを書き込むよい方法があれば教えてください。さらには、読み出し方まで教えていただけると助かります。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • VC++でMySQLがインストールされたサーバーに接続できない

    VC++2005のWin32コンソールアプリケーションにて、 MySQLがインストールされたサーバーにアクセスするアプリを作成しています。 実行したところ、「Host '自分のコンピュータ名' is not allowed to connect to this MySQL server」 というエラーメッセージが表示され、サーバーにアクセスすることが出来ません。 サーバー側のMySQLを停止させて実行すると、異なるメッセージが表示されるので、 サーバー側のMySQLの設定が原因かと考えているのですが、解決策が分かりません。。 解決策をご存知の方おられましたら、ご教授お願い致します。 下記にソースコードを掲載します。 ============================================================================================================ #include "stdafx.h" #include <windows.h> #include <mysql.h> #include <iostream> int _tmain(int argc, _TCHAR* argv[]) { MYSQL * con; MYSQL_RES * res; MYSQL_ROW row; char server[] = "サーバー側のIPアドレスを設定"; //サーバーのIPアドレスを指定しています char user[] = "root"; char password[] = "hoge"; //サーバー側のMySQLのパスワードを入れる char database[]= "test"; //データベース名を入れる //初期化 con = mysql_init(NULL); //MySQLに接続 if(!mysql_real_connect(con, server, user, password, database, 0, NULL, 0)){ fprintf(stderr, "%s\n", mysql_error(con)); exit(1); } //SQL文で問い合わせる if(mysql_query(con, "select * from test")){ fprintf(stderr, "%s\n", mysql_error(con)); exit(1); } //結果を得る res = mysql_use_result(con); //データを表示する while((row = mysql_fetch_row(res)) != NULL){ std::cout << row[0] << " " << row[1] << std::endl; } //接続を閉じる mysql_free_result(res); mysql_close(con); return 0; } ============================================================================================================

    • ベストアンサー
    • MySQL

専門家に質問してみよう