mysqlに接続し結果を返しDBを閉じるまでの一連の処理の関数を作りたいのですが、
以下のようなコードを使い、引数respを実行しDBから結果を取ってくるにはどの様に書いたらいいでしょうか。
関数名称と引数はこの通りです。int query(const char* a , resp)
char sql_str[255];
char *sql_serv = "○○";
char *user = "○○";
char *passwd = "";
char *db_name = "○○";
conn = mysql_init(NULL);
if(!mysql_real_connect(conn,sql_serv,user,passwd,db_name,0,NULL,0) ){
printf("%s\n",mysql_error(conn));
return -1;
}
mysql_options(conn, MYSQL_SET_CHARSET_NAME, "utf8");
copyString(sql_str,""); //←発行したいSQLを入力
if(mysql_query(conn,sql_str)){
printf("%s\n",mysql_error(conn));
mysql_close(conn);//
return -1;
}
resp = mysql_store_result(conn);
if(resp == NULL){
printf("%s\n",mysql_error(conn));
mysql_close(conn);
return -1;
}
mysql_free_result(resp);
mysql_close(conn);
return 0;
}
No.2ベストアンサー
- 回答日時:
No.1です。
論理モジュールであるにせよ物理モジュールであるにせよ、同一プログラム内の他の関数内から呼び出される関数にしたい・・・ということでしたら、他の関数からどのように使われるようにしたら他の関数から使いやすいかを考えて引数とリターン値を設計されればよいだけだと思うのですが。。。
ようは、そのプログラム内で扱うデータベース名、テーブル名が固定であればそれらは作成する関数を呼び出す側から提供される必要は無く、それ以外の検索条件と抽出する項目の指定を受け取ればよいだけです。
ただし、先々の拡張性を考慮してそれらも指定するように設計するか。。。 そこは作者の考え次第でしょう。
あと必要な指定は取り出した値を何処にセットするかの指定ですね。この領域は呼び出し元がメモリを用意してそのポインターを作成する関数へ引数で渡すことになります。
また、作成する機能をライブラリにし、どのプログラムでも使えるようにしたいということでしたらCのライブラリの作り方、コンパイルの仕方を勉強されればよいです。
そういうことではなく???
No.1
- 回答日時:
えっと。
。。C言語のプログラムでMySQL上のテーブルを扱いたいということですよね?
でしたらまずはGoogleなどで「C言語 MySQL」といった簡単なキーワードで検索されるか、本屋さん(ネットショップを含む)でMySQLの解説本を手にしてみてください。
ちなみにMySQLのリファレンス・マニュアルにもC言語APIを開設した章だったか節だったかがあったはずです。
MySQLの公式Webサイトを覗いてみて下さい。日本語もあったように記憶します。
ですが。。。
その前にリレーショナルデータベースのテーブルに対して検索に適合したデータを読み出す・・・というSQLはお分かりなのですよね?
ご質問にはテーブル構造も検索条件も書かれていないにも関わらず、「引数respを実行しDBから結果を取ってくるにはどの様に書いたらいいでしょうか」とありましたのでその辺がちょっとどうなのかなぁと不安に思った次第です。
もしリレーショナルデータベースというものや、それを扱うためのSQL(Structured Query Language)の基本を勉強されていないのでしたら、まずはそこをしっかり学ばれないとそれを扱うプログラムは作れません。
参考まで。
回答ありがとうございます!
すみません、説明が足りていませんでした。「C言語のプログラムでMySQL上のテーブルを扱いたい」で合っています。
「リレーショナルデータベースのテーブルに対して検索に適合したデータを読み出す」このSQLはわかります。
SQLのテーブルをC言語で扱うことはできるのですが、それを関数にして使いたく、その作り方を知りたいということでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
下記の問合せを行うクエリを、 ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
下記の問合せを行うクエリを、 ...
-
同一のユーザー、同一商品のと...
-
PhpMyAdminで作成して実行せよ...
-
Mac です。ローカルホストの ph...
-
テーブル名が可変の場合のクエ...
-
書籍の内容はまともでしょうか?
-
SQLでカラムを追加し、条件に合...
-
私の考えていることは ・mySQL ...
-
うまくいきません教えてくださ...
-
クエリを教えてください select...
-
「都道府県の面積の大きい順に...
-
mysqlがインストールされている...
-
PHP 画像のアップロード Qiita
-
php テーブルを作れない
-
エラー 1068 (42000): 複数の主...
-
MySQLのテーブル作成でハイフン...
-
AWSのRDSを無料枠で使用してお...
-
テーブル所有者、スキーマ所有...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpで複数のDBを使用した場合の...
-
複数行のクエリを、まとめて実...
-
PHPでMySQLテーブルロック一覧取得
-
C言語で変数の内容をINSERTする...
-
select文で見つからない場合の結果
-
データベースの選択エラー
-
トランザクションが効かない
-
MySQLのテーブルのデータ数のカ...
-
show databasesコマンドが効かない
-
緊急です。insert文が実行されない
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
ERROR 1045 (28000) (using pas...
-
like句を使って日本語を検索す...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
-
プライマリーキーの昇順でソー...
おすすめ情報
CプログラムでMySQL上のテーブルを扱うことはできるのですが、上記の一連のコードを関数にして他のプログラムで使えるようにしたいです。