VC++でMySQLに接続するには?

解決


いしわ  2003-12-03 19:27:29  No: 52741  IP: [192.*.*.*]

以下の文でプログラムを作成しました。データベースの接続はうまくいったのですがレコードセットがうまくいきません。
strSQL.Format("select * from test where 名前 like '%%%s%%'",m_SearchName);がいけないのでしょうか?
どなたか教えてください。
データベースはMySQLを使用しています。

strConnString.Format("DSN=%s",m_DSN);
strSQL.Format("select * from test where 名前 like '%%%s%%'",m_SearchName);
TRACE("%s\n",strSQL );

CDatabase db;
try{
    db.OpenEx(strConnString);
}
catch(CDBException *e)
{
  AfxMessageBox("データベースへの接続に失敗しました。");
  e->Delete();
  return;
}

CRecordset rs(&db);
try{
    rs.Open(CRecordset::dynaset,strSQL);
}
catch(CDBException *e)
{
  AfxMessageBox("レコードセットの構築に失敗しました。");
  e->Delete();
  db.Close();
  return;
}

編集 削除
岡田 之仁  2003-12-03 21:05:02  No: 52742  IP: [192.*.*.*]

MySQL の設定で、日本語を使えるようにmy.iniに設定されましたか?
MySQL のバージョンにも依存しますので・・・

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_01.htm

ちなみに・・・
http://www.softagency.co.jp/
http://www.mysql.gr.jp/
http://www.mysql.com/
は見られていますよネ?

ご確認下さい。

以上。

編集 削除
いしわ  2003-12-04 09:04:30  No: 52743  IP: [192.*.*.*]

>MySQL の設定で、日本語を使えるようにmy.iniに設定されましたか?
>MySQL のバージョンにも依存しますので・・・

お返事ありがとうございます。
確認してみたのですが、日本語は使えるようになっています。

strSQL.Format("select * from test where 名前 like '%%%s%%'",m_SearchName);のテーブルの指定がおかしいのでしょうか?

ちなみにMySQLのバージョンは3.23.49です。

たびたび申し訳ありませんが、どうぞよろしくお願いします。

編集 削除
TZ  2003-12-04 18:37:09  No: 52744  IP: [192.*.*.*]

strSQL.Format("select * from test where 名前 like '%%%s%%'",m_SearchName);
のかわりに、
strSQL = "select * from test";
とやってみたらどうでしょうか。
これで成功すればwhere句に問題があるということになり、これでも失敗すればそれ以前の問題ということになります。
あとは、CDBExceptionの中身を調べてみてはどうでしょうか。

編集 削除
いしわ  2003-12-05 10:31:45  No: 52745  IP: [192.*.*.*]

rs.GetFieldValue("名前", strValue);書いていた所の"名前"を勘違いして別の文字を書いていました。

無事に解決したので報告したいと思います。

どうもありがとうございました。

編集 削除