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

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

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

Re[12]: オブジェクト参照エラー PostgreSQL


(過去ログ 100 を表示中)

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

■59556 / inTopicNo.1)  オブジェクト参照エラー PostgreSQL
  
□投稿者/ 結衣 (1回)-(2011/05/31(Tue) 15:47:23)

分類:[.NET 全般] 

2011/05/31(Tue) 15:49:11 編集(投稿者)

<pre><pre>WindowsXP
Visualstudio2010
C#
で開発しています。

テーブル(AAAAA)が用意されています。
idがAAAidの場合のnumberを取得し、
そのnumberが空欄だった場合
そのidのデータを削除するというSQLです。

format = "SELECT * FROM AAAAA WHERE id = {0}";
command = string.Format( format, AAAid );
DataSet ds = this.ExecuteSQL( command );

if (ds.Tables["AAAAA"].Rows[0]["number"].ToString() == "") ※
{
command = "DELETE FROM AAAAA WHERE id = " + AAAid ;
this.ExecuteNonQuery(command);
}

※の場所で
NullReferenceExceptionはユーザーコードによってハンドルされませんでした。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーが出てしまいます。
同じような記述はほかにもあるので
なぜここだけエラーになるのかわかりません。

ちなみにDataSetのdsはnullではありません。
ブレークポイントで確認済みです。
よろしくお願いいたします。</pre></pre>
引用返信 編集キー/
■59557 / inTopicNo.2)  Re[1]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (1回)-(2011/05/31(Tue) 15:53:39)
No59556 (結衣 さん) に返信

ds.Tables["AAAAA"].Rows[0]["number"]がnullだからじゃないですか?
引用返信 編集キー/
■59558 / inTopicNo.3)  Re[1]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (2回)-(2011/05/31(Tue) 15:57:40)
No59556 (結衣 さん) に返信

あと、この場合、ds.Tables["AAAAA"].Rows.Countが0の場合も例外が発生するのでは?
引用返信 編集キー/
■59559 / inTopicNo.4)  Re[2]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (2回)-(2011/05/31(Tue) 16:13:21)
ありがとうございます。

No59558 (プリン さん) に返信
> ■No59556 (結衣 さん) に返信
>
> ds.Tables["AAAAA"].Rows[0]["number"]がnullだからじゃないですか?
ds.Tables["AAAAA"].Rows[0]["number"]には何も入っていません。
""ということだと思ったのですがそれがnullだったということですかね・・・

> あと、この場合、ds.Tables["AAAAA"].Rows.Countが0の場合も例外が発生するのでは?
ds.Tables["AAAAA"].Rows.Countを実行するとエラーになります。
Countが0というよりも、Countが取得できていないです。
引用返信 編集キー/
■59560 / inTopicNo.5)  Re[3]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (3回)-(2011/05/31(Tue) 16:18:30)
2011/05/31(Tue) 16:30:25 編集(投稿者)

No59559 (結衣 さん) に返信

> ds.Tables["AAAAA"].Rows.Countを実行するとエラーになります。
> Countが0というよりも、Countが取得できていないです。

どのようなエラーですか?(ここを追加)
ということは、ds.Tables["AAAAA"]がnullですか?
dsに含まれるテーブルを調べてみてください。
引用返信 編集キー/
■59563 / inTopicNo.6)  Re[4]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (3回)-(2011/05/31(Tue) 16:30:40)
ありがとうございます。

No59560 (プリン さん) に返信
> ■No59559 (結衣 さん) に返信
> ということは、ds.Tables["AAAAA"]がnullですか?
MessageBox.Show(ds.Tables["AAAAA"].ToString());
このようにやってみたら
例外が発生しました。

> dsに含まれるテーブルを調べてみてください。
どのように調べればいいですか?
引用返信 編集キー/
■59564 / inTopicNo.7)  Re[5]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (4回)-(2011/05/31(Tue) 16:40:42)
2011/05/31(Tue) 16:46:06 編集(投稿者)

No59563 (結衣 さん) に返信

>>dsに含まれるテーブルを調べてみてください。
> どのように調べればいいですか?

ds.Tablesはdsに含まれるDataTableのコレクションなので、
ds.Tables.Countが0ならばテーブルは何もありません。
あとはこのコレクションの中身を調べてみてください。
テーブル名が違っているなんてことはないですか?
(全角/半角の違いも疑った方がいいかと)
引用返信 編集キー/
■59565 / inTopicNo.8)  Re[6]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (4回)-(2011/05/31(Tue) 16:49:03)
ありがとうございます。
No59564 (プリン さん) に返信
> ■No59563 (結衣 さん) に返信
>
> >>dsに含まれるテーブルを調べてみてください。
>>どのように調べればいいですか?
>
> ds.Tablesはdsに含まれるDataTableのコレクションなので、
> ds.Tables.Countが0ならばテーブルは何もありません。
ds.Tables.Countは1でした。

> あとはこのコレクションの中身を調べてみてください。
> テーブル名が違っているなんてことはないですか?
> (全角/半角の違いも疑った方がいいかと)
テーブル名は確認済みです。
データもきちんと入っています。
引用返信 編集キー/
■59566 / inTopicNo.9)  Re[7]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (5回)-(2011/05/31(Tue) 16:53:32)
No59565 (結衣 さん) に返信

>>あとはこのコレクションの中身を調べてみてください。
>>テーブル名が違っているなんてことはないですか?
>>(全角/半角の違いも疑った方がいいかと)
> テーブル名は確認済みです。
> データもきちんと入っています。

そうですか。それでは、
DataTable dt = ds.Tables["AAAAA"];
として、DataTable dtがnullかどうか、nullでなければCountはどうかを調べられますか?
引用返信 編集キー/
■59567 / inTopicNo.10)  Re[8]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (5回)-(2011/05/31(Tue) 17:02:38)
No59566 (プリン さん) に返信
> ■No59565 (結衣 さん) に返信
>
> >>あとはこのコレクションの中身を調べてみてください。
> >>テーブル名が違っているなんてことはないですか?
> >>(全角/半角の違いも疑った方がいいかと)
>>テーブル名は確認済みです。
>>データもきちんと入っています。
>
> そうですか。それでは、
> DataTable dt = ds.Tables["AAAAA"];
> として、DataTable dtがnullかどうか、
これがnullになっています。
引用返信 編集キー/
■59568 / inTopicNo.11)  Re[9]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (6回)-(2011/05/31(Tue) 17:07:58)
2011/05/31(Tue) 17:12:53 編集(投稿者)

No59567 (結衣 さん) に返信

タイプミスしました。ごめんなさい。
×ds.Tables[0].Name
○ds.Tables[0].TableName

>>DataTable dt = ds.Tables["AAAAA"];
>>として、DataTable dtがnullかどうか、
> これがnullになっています。

ということは、ds.Tables.Countが1であるにも関わらず、
このテーブル名が"AAAAA"でないということでしょう。
(おそらく、"AAAAA"は実際のテーブル名ではないのだと思いますが)
それでは、ds.Tables.Countが1の時、ds.Tables[0].TableNameは何を表示しますか?
(これが"AAAAA"であるはずなのですが)
ちなみにテーブル名に日本語等の2バイト文字を使っていて、テーブル名が文字化けしているという
オチはないでしょうか?
引用返信 編集キー/
■59569 / inTopicNo.12)  Re[9]: オブジェクト参照エラー PostgreSQL
□投稿者/ shu (739回)-(2011/05/31(Tue) 17:15:40)
No59567 (結衣 さん) に返信

> if (ds.Tables["AAAAA"].Rows[0]["number"].ToString() == "")
if (ds.Tables[0].Rows[0]["number"].ToString() == "")

でいいと思います。
dsを作るときにテーブル名を指定してないので"AAAAA"というテーブルは
ds内に存在しないはずです。提示コードでその部分が省略されているなら別ですが。


引用返信 編集キー/
■59570 / inTopicNo.13)  Re[10]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (6回)-(2011/05/31(Tue) 17:16:07)
No59568 (プリン さん) に返信
> 2011/05/31(Tue) 17:12:53 編集(投稿者)
>
> ■No59567 (結衣 さん) に返信
>
> タイプミスしました。ごめんなさい。
> ×ds.Tables[0].Name
> ○ds.Tables[0].TableName
>
> >>DataTable dt = ds.Tables["AAAAA"];
> >>として、DataTable dtがnullかどうか、
>>これがnullになっています。
>
> ということは、ds.Tables.Countが1であるにも関わらず、
> このテーブル名が"AAAAA"でないということでしょう。
> (おそらく、"AAAAA"は実際のテーブル名ではないのだと思いますが)
> それでは、ds.Tables.Countが1の時、ds.Tables[0].TableNameは何を表示しますか?
> (これが"AAAAA"であるはずなのですが)
AAAAAになっていませんでした。
どこで間違ったのか・・・
引用返信 編集キー/
■59571 / inTopicNo.14)  Re[11]: オブジェクト参照エラー PostgreSQL
□投稿者/ プリン (7回)-(2011/05/31(Tue) 17:22:58)
No59570 (結衣 さん) に返信

> AAAAAになっていませんでした。
> どこで間違ったのか・・・

AAAAAになっていないとしたら、TableNameは何になっていましたか?
dsに複数のテーブルが存在しないのなら、shuさんの方法でいいでしょう。
(ただし、.ToString() == ""は、DBNullの場合は例外になるのでは?)
引用返信 編集キー/
■59572 / inTopicNo.15)  Re[12]: オブジェクト参照エラー PostgreSQL
□投稿者/ shu (740回)-(2011/05/31(Tue) 17:34:16)
No59571 (プリン さん) に返信

> (ただし、.ToString() == ""は、DBNullの場合は例外になるのでは?)
null以外ならToStringは使用出来ると思います。
引用返信 編集キー/
■59574 / inTopicNo.16)  Re[10]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (7回)-(2011/05/31(Tue) 17:38:20)
ありがとうございます。

No59569 (shu さん) に返信
> ■No59567 (結衣 さん) に返信
>
>>if (ds.Tables["AAAAA"].Rows[0]["number"].ToString() == "")
> if (ds.Tables[0].Rows[0]["number"].ToString() == "")
>
> でいいと思います。
> dsを作るときにテーブル名を指定してないので"AAAAA"というテーブルは
> ds内に存在しないはずです。提示コードでその部分が省略されているなら別ですが。

この書き方で解決いたしました。ありがとうございました。
引用返信 編集キー/
■59575 / inTopicNo.17)  Re[12]: オブジェクト参照エラー PostgreSQL
□投稿者/ 結衣 (8回)-(2011/05/31(Tue) 17:39:15)

ありがとうございました。
No59571 (プリン さん) に返信
> ■No59570 (結衣 さん) に返信
>
>>AAAAAになっていませんでした。
>>どこで間違ったのか・・・
>
> AAAAAになっていないとしたら、TableNameは何になっていましたか?
> dsに複数のテーブルが存在しないのなら、shuさんの方法でいいでしょう。
> (ただし、.ToString() == ""は、DBNullの場合は例外になるのでは?)

shuさんの方法で無事解決いたしました。
ありがとうございました。
また何かありましたらよろしくお願いいたします。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -