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版を入れています。
どこが原因でエラーが起こっているのでしょうか?
よろしくお願いします。
お礼
ありがとうございました。
補足
ご回答ありがとうございます。 googleで「mysql c api」で検索しましたが、具体的にどのような仕組みを作りあげていけばよいのか、よく分かりませんでした。 サンプルみたいなコードがあれば、助かるのですが、御存知ないですか。