C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: C#とMySQLの連携


(過去ログ 104 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■62147 / inTopicNo.1)  C#とMySQLの連携
  
□投稿者/ taz (6回)-(2011/09/25(Sun) 08:59:31)

分類:[C#] 

2011/09/25(Sun) 09:48:27 編集(投稿者)

こんにちは。

C#でデータベースはMySQLとの連携をしたいのですが、

private void Form1_Load(object sender, EventArgs e)
{
MySqlConnection hMySql = null;
MySqlDataReader reader = null;

String connectionString = String.Format(
"server={0};user id={1}; password={2};    database=mysql; pooling=false",
"http://localhost:3306/SampleDB050", "root", "");

hMySql = new MySqlConnection(connectionString);
hMySql.Open();

hMySql.GetSchema();
hMySql.ChangeDatabase("tecs_db");

//SQL文作成
String sql = "select * from T01Prefecture order by PREF_CD";

MySqlCommand cmd = new MySqlCommand(sql, hMySql);
reader = cmd.ExecuteReader();

while (reader.next)
{
// データの取り出し
}

if (reader != null) reader.Close();
if (hMySql != null) hMySql.Close();
}

while (reader.next) のnext部分に波線が出ておりうまくいきません。

どなたかアドバイスお願いします。
引用返信 編集キー/
■62151 / inTopicNo.2)  Re[1]: C#とMySQLの連携
□投稿者/ ペイリン (4回)-(2011/09/25(Sun) 17:35:53)
No62147 (taz さん) に返信

> while (reader.next) のnext部分に波線が出ておりうまくいきません。

波線が出ている、ということは、文法エラーということでしょうか?
「うまくいきません」とだけ書くのではなく、エラーがあるならば、エラーの内容を記載するようにしましょう。

さて、本題ですが、内容からして、「while (reader.next)」の部分は、「while (reader.Read())」なのではないでしょうか?

それと、これは余談ですが、

> if (reader != null) reader.Close();
> if (hMySql != null) hMySql.Close();

の部分は、reader等がnullであれば、上記処理の前段階で例外が発生しますので、
これらif文は意味がなく、各Closeメソッドだけで十分です。
そうでなければ、例外処理のfinallyに上記if文を記載すべきです。
引用返信 編集キー/
■62153 / inTopicNo.3)  Re[2]: C#とMySQLの連携
□投稿者/ taz (7回)-(2011/09/25(Sun) 17:57:07)
No62151 (ペイリン さん) に返信
> ■No62147 (taz さん) に返信
>
>>while (reader.next) のnext部分に波線が出ておりうまくいきません。
>
> 波線が出ている、ということは、文法エラーということでしょうか?
> 「うまくいきません」とだけ書くのではなく、エラーがあるならば、エラーの内容を記載するようにしましょう。
>
> さて、本題ですが、内容からして、「while (reader.next)」の部分は、「while (reader.Read())」なのではないでしょうか?
>
> それと、これは余談ですが、
>
>>if (reader != null) reader.Close();
>>if (hMySql != null) hMySql.Close();
>
> の部分は、reader等がnullであれば、上記処理の前段階で例外が発生しますので、
> これらif文は意味がなく、各Closeメソッドだけで十分です。
> そうでなければ、例外処理のfinallyに上記if文を記載すべきです。

アドバイスありがとうございます。

private void Form1_Load(object sender, EventArgs e)
{
MySqlConnection hMySql = null;
MySqlDataReader reader = null;

String connectionString = String.Format(
"server={0};user id={1}; password={2};    database=mysql; pooling=false",
"http://localhost:3306/SampleDB050", "root", "");

hMySql = new MySqlConnection(connectionString);
hMySql.Open();

hMySql.GetSchema();
//hMySql.ChangeDatabase("tecs_db");

//SQL文作成
String sql = "select * from T01Prefecture order by PREF_CD";

MySqlCommand cmd = new MySqlCommand(sql, hMySql);
reader = cmd.ExecuteReader();

while (reader.Read())
{
MessageBox.Show(reader.GetString("PREF_NAME"));

}

reader.Close();
hMySql.Close();
}

のように修正しましたが、データを取得する事が出来ません。
引用返信 編集キー/
■62156 / inTopicNo.4)  Re[3]: C#とMySQLの連携
□投稿者/ ペイリン (5回)-(2011/09/25(Sun) 19:09:13)
No62153 (taz さん) に返信

> のように修正しましたが、データを取得する事が出来ません。

何度も言うようですが、「データを取得する事が出来ません」では、
whileの中を通らなくてデータを取得できないのか、
reader.GetStringの戻り値が空っぽになってしまってデータを取得できないのか、
エラーでデータを取得できないのか、分かりません。
これでは誰もアドバイスのしようがないので、せめて上記の状況くらいは書くようにしましょう。

引用返信 編集キー/
■62158 / inTopicNo.5)  Re[4]: C#とMySQLの連携
□投稿者/ taz (8回)-(2011/09/25(Sun) 19:21:03)
No62156 (ペイリン さん) に返信
> ■No62153 (taz さん) に返信
>
>>のように修正しましたが、データを取得する事が出来ません。
>
> 何度も言うようですが、「データを取得する事が出来ません」では、
> whileの中を通らなくてデータを取得できないのか、
> reader.GetStringの戻り値が空っぽになってしまってデータを取得できないのか、
> エラーでデータを取得できないのか、分かりません。
> これでは誰もアドバイスのしようがないので、せめて上記の状況くらいは書くようにしましょう。

アドバイスありがとうございます。デバッグ結果、

hMySql.Open(); の行でフォームがロードされ、それ以下のコードには行ってないようです。

引用返信 編集キー/
■62160 / inTopicNo.6)  Re[5]: C#とMySQLの連携
□投稿者/ ペイリン (7回)-(2011/09/25(Sun) 19:49:01)
No62158 (taz さん) に返信

> hMySql.Open(); の行でフォームがロードされ、それ以下のコードには行ってないようです。

なるほど、Openのところで何かおかしな事が起こっているのでしょうね。
可能性としては、connectionStringのパラメータが妥当でないことが考えられますので、
デバッグでconnectionString変数の中身を確認し、内容の妥当性を調べてみては如何でしょうか。

ところで、connectionStringの各パラメータは、何かを参考にしたのでしょうか?
「database=」のパラメータの内容についてはDB名をどのようにつけたか分からないので何とも言えませんが、
例えば、「server=」と記載しているのは、もしかして「Data Source=」のことなのではないかと。
引用返信 編集キー/
■62162 / inTopicNo.7)  Re[6]: C#とMySQLの連携
□投稿者/ taz (9回)-(2011/09/25(Sun) 20:19:21)
2011/09/25(Sun) 20:19:41 編集(投稿者)

No62160 (ペイリン さん) に返信
> ■No62158 (taz さん) に返信
>
>>hMySql.Open(); の行でフォームがロードされ、それ以下のコードには行ってないようです。
>
> なるほど、Openのところで何かおかしな事が起こっているのでしょうね。
> 可能性としては、connectionStringのパラメータが妥当でないことが考えられますので、
> デバッグでconnectionString変数の中身を確認し、内容の妥当性を調べてみては如何でしょうか。
>
> ところで、connectionStringの各パラメータは、何かを参考にしたのでしょうか?
> 「database=」のパラメータの内容についてはDB名をどのようにつけたか分からないので何とも言えませんが、
> 例えば、「server=」と記載しているのは、もしかして「Data Source=」のことなのではないかと。

private void Form1_Load(object sender, EventArgs e)
{
MySqlConnection hMySql = null;
MySqlDataReader reader = null;

String connectionString = String.Format(
"Database = sampledb050;Data Source=localhost;User Id=root;Password=");

hMySql = new MySqlConnection(connectionString);
hMySql.Open();

hMySql.GetSchema();
//hMySql.ChangeDatabase("tecs_db");

//SQL文作成
String sql = "select * from T01Prefecture order by PREF_CD";

MySqlCommand cmd = new MySqlCommand(sql, hMySql);
reader = cmd.ExecuteReader();

while (reader.Read())
{
MessageBox.Show(reader.GetString("PREF_NAME"));

}

reader.Close();
hMySql.Close();
}

以上でデータ取得に成功しました。アドバイスありがとうございました。またよろしくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -