スキップしてメイン コンテンツに移動

MySQLへのアクセスではまった

MySQLへの参照するプログラムではまった…

今日は郵便番号→住所変換の処理を作成している。 1時間もあればできると思っていたが、おおはまり(^^ゞ


Oracleでは列の連結で 「列名||列名」で連結できるのだが、MySQLでは出来ない…
仕方がないので、add1, add2, add3で取り出すことにした。

SELECT文にパラメータを埋め込んで、郵便番号から住所を取り出すようにしたが、ネットを検索すると、パラメータの指定に「@」を付けていたので、迷わず
select add1, add2, add3 as address from zip where zipcode=@zip
と、書いた。

全く住所が返ってこない…


リファレンスマニュアルをなめ回すと、なんと「?」で指定してある…

結果、以下のようなコードでやっと住所が取ってこれた。あ~疲れた…

MySqlConnection conn = new MySqlConnection(Test1.Properties.Settings.Default.ConnectionString);

string selectQuery = "select add1, add2, add3 as address from zip where zipcode=?zip";
MySqlCommand MyCmd = new MySqlCommand(selectQuery, conn);

conn.Open();

string zip = textBox1.Text.Replace("-", "");
Console.WriteLine("zip=[{0}]", zip);
MyCmd.Parameters.Add("?zip", MySqlDbType.VarChar).Value = zip;

MySqlDataReader reader;
reader = MyCmd.ExecuteReader();

Console.WriteLine("Count:{0}", reader.FieldCount);

reader.Read();
Console.WriteLine("text:[{0}]", reader.GetString(0));
textBox2.Text = reader.GetString(0) + reader.GetString(1) + reader.GetString(2);

reader.Close();
conn.Close();

try等の例外処理は、全く入っていません。悪しからずご了承ください。
 ちなみに、郵便番号のデータは 郵便局のサイト(http://www.post.japanpost.jp/zipcode/dl/kogaki.html)から入手したものを加工して参照しています。

コメント

このブログの人気の投稿

MySQL NotifierがHigh Severity Errorを出して立ち上がらない…

先日、わしのPCがコンセントが抜けかけが原因で落ちて以来、MySQLのNotifierがエラーを出して立ち上がらなくなった… 1週間放置しておいたが、毎日エラーダイアログが表示されるのも目障りなので、対処してみた。 結果、 %APPDATA%\Oracle\MySQL Notifier にある settings.config が壊れていることが判り、削除し解決した。 なんでこんなものが壊れたのかは不明…

Oracle 10gのsqlplus…日本語のメッセージが出ない(>_<")

データの日本語は表示されるのに、sqlplusからのメッセージは全部英語… なんでだぁ~((+_+)) 「oracle 10g sqlplus 日本語メッセージ」でググっても、ろくな情報集まらない 誰か教えてくれぇ~ ↑ 日本語のメッセージが出ない理由がわかった… インストール時に言語選択で日本語を選択しなかった為だった… それも、オレがインストールした方法だと、その言語選択画面が出ないこともわかった(>_<") こりゃ、罠だ… Oracleへはまだ問い合わせしていないので、ただしい対応方法はわからないが… 日本語を選択し正しくインストールされたデータベースの***.msbファイルをコピーしてやることで日本語のメッセージが表示できるようだ。 実際には… 正しく表示される \sqlplus\mesg の中にあるファイルを日本語が表示されないOracleにコピーしてやれば日本語が表示されるようになる。 Oracle10.1.0.2から10.1.03へのパッチをあててあるので、インストーラーから言語の追加のインストールは出来ない… 対応方法誰か教えて(@o@)