• ベストアンサー

構造体の中身をデータベースにコピーする方法がわかりません。

 タイトルにも書いてありますが、 構造体の中身をmysqlで作成したデータベースに 書き込んでいく方法がわからなく、困っております。  PHPやODBCはまったく使い方がわからないので、 C言語のみでアクセスする方法をググってみたところ、 c apiというものがあることはわかりました。 しかし、capiを使ったサンプル自体が極端に少なく、 サンプルの内容もデータベースにアクセスして、テーブル内の 内容を表示するというものがほとんどでした。  変数の値をデータベースに書き込む、というだけのサンプルだけでもいいので、どなたか教えてくださればありがたいです。  もしくは、構造体の中身はcsvファイルとしてすべて書き出しているんですが、このcsvファイルをmysqlで直接読み込んでいったほうが早いのでしょうか?  よろしくお願いいたします。  

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

  • ベストアンサー
回答No.3

この辺りもいいと思います。 http://www13.plala.or.jp/kmaeda/winc/winc.htm#DATABASE の「Data Base のテストプログラム」あたりです。

curve_2008
質問者

お礼

ありがとうございます!!!  何で私が検索かけても見つからなかったのだろう……orz この検索能力も少しずつ上げていきたいものです。  このサイトがあれば、プログラミングに入る前の準備は大丈夫だと思います。ひとつひとつ説明もついてますし。文句無しです。 ありがとうございました!!

curve_2008
質問者

補足

 教えていただいたアドレス先のmysqlの基本操作を終え、 いざVC++からアクセスしようとしたのですが、 サンプルプログラムを実行するとmysql.hのインクルードで引っかかっています。 error C1083: include ファイルを開けません。'mysql.h': No such file or directory と出てきました。 おそらく原因はコンパイルの環境設定だと目星をつけ、またググったり 教えてgoo内を調べてみて、 MySQLがインストールされたディレクトリを -I と -L で指定してやるだけです。 -I がincludeファイルのあるところ、 -L がライブラリの名前です。標準以外のところに置かれていればフルパスで。 という答えが、同じ問題にぶつかった方の回答でありました。 その方はこの答えで解決したようですが、私はなんのことやらわかりません。この方はgccを使っていたようです。 見よう見まねでVCのオプションのVC++ディレクトリのインクルードファイルのところに、フルパスでmysqlをインストールしたところを指定してみましたが、意味がありませんでした。 それとも、そもそもの設定の箇所が間違っているのでしょうか? 私の環境は vc++2008ExpressEdition mysqlServer5.0 です。 apacheとPHPの設定をした時のように、OSがvistaだから……という理由じゃないことを切に願います。

その他の回答 (3)

回答No.4

VS2005の環境では以下で設定できました。たぶんこの設定でいいと思います。 (1)プロジェクトのプロパティを開く。 (2)「構成プロパティ」-「C/C++」-「全般」内の「追加のインクルードディレクトリ」に MySQL.hが保存されているフォルダを指定する。 エラーが発生した際には、エラーを選択し、「F1」キーを押すと、一応対処方法が出てくると思います。 たまに役に立たないときがありますが。。。

curve_2008
質問者

お礼

 回答ありがとうございます。 さっそく教えていただいた方法と、私が調べた結果を試してみました。 その結果、両方の設定を同時にすることでインクルードは読み込んでくれるようになりました。  以下にその設定箇所を書いておきます。 開発環境:OSはvista、VC++2008、mysqlserver5.0です。 (1)mysqlのセットアップの際、Developer ComponentsのC IndudeFiles/Lib Filesを忘れずインストールしておく。 私のようにネットなどを使い参考にしてインストールすると、サイト によってはVC++を使わない方向でインストールしている場合がありま す。その場合includeフォルダがインストールされません。 まさに私がそうでした。 (2)コントロールパネル→システム→システムの詳細設定→詳細設定タブ内の環境変数→PathにC:\Program Files\MySQL\MySQL Server 5.0\binを追加する。 (3)VC++2008を立ち上げて、ツール→オプション→VC++ディレクトリを選択し、ディレクトリを表示するプロジェクト内のインクルードファイルを選択。そしてC:\Program Files\MySQL\MySQL Server 5.0\includeを追加する。 (4)VC++2008プロジェクトのプロパティを選択。構成プロパティ内のリンカ→入力→追加依存ファイルに wsock32.lib "C:\Program Files\MySQL\MySQL Server 5.0\lib\debug\libmysql.lib" の二つを追加します。フルパスは""でくくらないと認識しません。 この作業を終え、泣きそうになりながら適当なサンプルを実行したら、 一応は走ってくれました。 これはあくまで私の設定した方法です。余計なこともしているかもしれません。 おそらく、各アプリケーションのVerによって設定方法は全く違います。 少数だとは思いますが、同じ問題で悩んでいる人がいたら参考にしてもらえれば幸いです。 ようやく設定が終わりました。そもそもの質問である、変数内のデータをデータベースに書き込んでいくという作業にようやく取り掛かれます。 takuro-san、くだらない上に脱線した私の質問に親切にお答えしていただき、ありがとうございます!

回答No.2

以下にたくさんサンプルがあります。 この中の「Adding records to table」の部分が参考になるのではないでしょうか? http://www.geocities.com/jahan.geo/mysql_c_by_example.html#InitializingMySQLAPI

curve_2008
質問者

お礼

 ありがとうございます。 リファレンス片手に少しずつ読み進めていきます。  しかし……0から始めたり、ネコでもわかったりするc言語で扱うmysql講座、みたいなサイトってないんですね……  私の検索の仕方が悪いのか、二日くらい探してますが一つも見つかりません。  あれば少なくとも私は泣いて喜ぶんですが…… もしこのサイトがわかりやすくて使える、というお勧めがありましたら ぜひ教えていただけますでしょうか。お願いします。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んと…構造体のレコード毎に ・insert文を作成して ・DBにクエリを投げる だけなので。特に難しい事も無いと思うのですが…どのあたりで困ってらっしゃいますでしょうか?

curve_2008
質問者

補足

 お恥ずかしい限りなのですが、その特に難しくない部分で悩んでます。 mysql単体でのデータベースの作成、テーブル作成追加、削除、更新などはできるのですが、それをどうやって他のアプリケーションから扱うかで行き詰りました。  参考書などに書かれているc言語の標準関数以外のものをまったく扱ったことがないもので。    ですので、何を最初にインクルードするか、どうやってmysqlを呼び出すか、そして変数内のデータをデータベースに書き込んでいくか。    この流れの簡単なサンプル(長かったり、複雑すぎるとまだ読めないです……)などいただければ、ありがたいです。

関連するQ&A