以下の文でプログラムを作成しました。データベースの接続はうまくいったのですがレコードセットがうまくいきません。
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;
}
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/
は見られていますよネ?
ご確認下さい。
以上。
>MySQL の設定で、日本語を使えるようにmy.iniに設定されましたか?
>MySQL のバージョンにも依存しますので・・・
お返事ありがとうございます。
確認してみたのですが、日本語は使えるようになっています。
strSQL.Format("select * from test where 名前 like '%%%s%%'",m_SearchName);のテーブルの指定がおかしいのでしょうか?
ちなみにMySQLのバージョンは3.23.49です。
たびたび申し訳ありませんが、どうぞよろしくお願いします。
strSQL.Format("select * from test where 名前 like '%%%s%%'",m_SearchName);
のかわりに、
strSQL = "select * from test";
とやってみたらどうでしょうか。
これで成功すればwhere句に問題があるということになり、これでも失敗すればそれ以前の問題ということになります。
あとは、CDBExceptionの中身を調べてみてはどうでしょうか。
rs.GetFieldValue("名前", strValue);書いていた所の"名前"を勘違いして別の文字を書いていました。
無事に解決したので報告したいと思います。
どうもありがとうございました。