こんにちは。
+-----------+------------+
| key_sports......| val_sports..........|
+-----------+------------+
| baseball............| America...........|
+-----------+------------+
| football.............| England.............|
+-----------+------------+
| sumou...............| Japan................|
+-----------+------------+
上記内容を例にして、
質問させていただきます。
C++のプログラム内に
MySQLから値を取得する意図を満たすソースを挿入しました。
プラグラム動作中に得る変数「key」から得る値を、
MySQLの「key_sports」の列の値とし、
「key」で指定した「key_sports」の値に対応する
「val_sports」の値を取得したいと思っています。
上記例では、
たまたまプログラム内から得たkeyが「baseball」だったとすると、
MySQLより「America」という値を取得したい感じです。
その際に必要となるコマンドというのは、
どのようになるものでしょうか?
最初、コマンドが以下内容かと思いましたが、
どうも適切に値が取得できていませんでした。
どう直せばいいでしょうか?
select val_sports from test007 where key_sports = @key
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
※table名:test007
CentOS内でC++のソースを書いていました。
アドバイスいただけますとありがたいです。
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
もう解決しているかもしれませんが。
そんなに難しく考える事はないよ。
見た感じ、
「key_sports」までは問題ないと思われるので、
変数を記述しているkeyの型とかがあってないんじゃないのかい?
「%s」だったり、「c_str()」あたりを
変数の記述の部分であてがってみたりしてはどうだろうか。
@とかはいらないな。
たぶんゴール近いよ。
どんぴしゃでした!
「c_str()」を使用して、C出力に型を変えてみましたら、
改善されました!
優しく教えていただき、ありがとうございました!
とても、助かりましたです。
No.2
- 回答日時:
まず、mysql_query()の戻り値を0以外かチェックしてエラー判定してください。
それでエラー内容がmysql_error()で得られます。それと
sprintf(kuni_get2, "select val_sports from test007 where key_sports = @key")
は意味が分りません。
MySQLのプロじゃないので知らないだけかもしれませんが、@keyってMySQLで置き換えてくれるんでしたっけ?少なくともsprintfでは置き換えてくれません。
No.1
- 回答日時:
もしエラーなら、MySQLからエラーメッセージが返ってきているはずですが?そのエラーメッセージに内容を教えてください。
key_sportsが文字列型だと、
select val_sports from test007 where key_sports = 'baseball'
じゃないとダメだと思うんですが。
この回答への補足
補足になれているか不安ですが、
エラーとしては、
プログラムを動作中に
「セグメンテーションエラー」と表示されて、
sqlのあたりで止まってしまう感じです。
MySQLにとりにいくあたりは、
下記にあるようなそーすになっていますが、
printfでエラーの場所を探していたら、
=================================
##(1)
##(4)
セグメンテーション違反です
=================================
と言う風になって終了していたので、
sqlコマンドが間違っているのだろうなと思い、
コマンド文の確認をさせていただきたくなった次第です。
=================================
char kuni_get2[256];
if(sprintf(kuni_get2, "select val_sports from test007 where key_sports = @key"));
mysql_query(conn, kuni_get2);
res = mysql_use_result(conn); //get the results
printf("## (1)\n");
while ((row = mysql_fetch_row(res)) != NULL){
printf("## (2)\n");
std::stringstream kstream ;
printf("## (3)\n");
kstream << row[0] ;
}
printf("## (4) \n");
=================================
試しに、「@key」としている部分を、
例えば、「'basebasll'」などとすると、
何もエラーなど発生せずに、
「America」を取得して、
プログラムが終了できるのを確認できています。
しかし、selectの際にwhereで指定している部分は、
実際には、
毎回任意に変化する変数keyを指定したいつもりでして、
「basebasll」や「sumou」などと直接に英数字を指定してしまうのは、
少し意図と異なってしまいますです。
変数をwhereの条件部で指定したい感じです。
それって不可能でしょうか?
key_sportsは確かに文字列型です。
table作成時「CHAR(256)」を指定して作成しています。
また、変数keyもcharで宣言が済まされている変数になり、
プログラムの動作に応じて、
baseball、footbasll、sumouの3つのどれか1つが
選択されている感じです。
補足になっていると幸いです。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
10進数をアスキーコードに変換
-
ラジオボタンの値の取得につい...
-
DataGridView 複数行同時変更...
-
Rubyで1ミリ秒のsleepできない...
-
Access2003 オートナンバーの現...
-
大きな数の乱数を作るには
-
VBAのチェックボックス結果を集...
-
C#でのIF文 時間比較のやり方
-
足して100になるような乱数のア...
-
C言語(DXlib)での音ゲーについ...
-
C言語でCLAMP(a,b,c)
-
VBAで配列のNULL判定
-
VBで余りを求める
-
相関係数p値の出し方
-
負の二進数
-
VBAで72時間タイマーがオーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームを開くときに、コンボ...
-
足して100になるような乱数のア...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
VB6.0-整数と余りを求める
-
VBAで配列のNULL判定
-
数字の位ごとの値を表示するプ...
-
VBAの定数の使い方で、計算値を...
-
フリーランタイマーの時間差分...
-
C#で動的にコントロールを取得...
-
10進数をアスキーコードに変換
-
コンボボックスの名前を変数に...
-
1つ前の値を変数に保存する方法
-
ラジオボタンの値の取得につい...
-
スピンボタンで小数点
-
相関係数p値の出し方
-
C言語でCLAMP(a,b,c)
-
DataGridView 複数行同時変更...
-
VBAのチェックボックス結果を集...
-
データ構造のmapとは?
おすすめ情報