2016-05-12 8 views
-1

レコードをデータベースに記録するかどうかは、行を数えて調べようとしています。私は行の数をカウントし、レコードがデータベースに存在するように行数(1,2,3など)を返すコードを持っています。行数をカウントするには離れていますが、レコード数が0に等しい場合にのみメッセージを返します(レコードはデータベースに存在しません)。0の場合は行数を取得する -

while (dbReader.Read()) 
       { 
        int fCount = dbReader.FieldCount; 
for (int i2 = 0; i2 < fCount; i2++) 
{ 
    string col = dbReader.GetString(i2); 

     string strExist = "Record Exists"; 
    ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + strExist + "');", true); 
} 
} 
Some Code --- 
{ 
    // Record doesn't exist in database. 
} 

私はDB2データベースでC#を使用しています。

私はIfステートメントを行う

if fcount == 0, 

私はそれをデバッグした後、それは例外の詳細を述べている:System.InvalidOperationExceptionが:データなし行/列に存在しません。オンライン行の列col = dbReader.GetString(i2);

データが存在しないことはわかっていますが、代わりにこのエラーではないというメッセージが必要です。

+0

あなたの例では、少し簡単だと私はあなたが「というメッセージを返す」によって何を意味するのか分からない...の行をカウントする貧しい人々の方法のようです。 fCountには行数が含まれていますか?だから、あなたが必要なのは(fCount == 0)if?私はそれがあなたが質問に詳細を追加すると助けになると思います。 – OldBoyCoder

+0

私はコードを変更しました。私は助けてくれることを願っています。 – user6097989

+0

OK、それは、fCountが行数であると思っていました。ループに入ったということは、1行のデータを持たなければならないか、ReadがFalseを返すことを意味します。取得している例外は、列のデータがないことを意味します。もしGetStringを呼び出す前に '(!dbReader.IsDBNull(i2))'を試してみてください。 – OldBoyCoder

答えて

2

なぜあなたは単にdbReader.HasRows()を見ていませんか?

カウントフィールドは

+0

はい、OPが空の行や空のフィールドをチェックしようとしているのかどうか分かりません。ゼロ行をチェックするだけの場合は、HasRowsが正しい答えです。 – OldBoyCoder

+0

私はこの あれば、他の(dbReader.HasRows) { } 場合(dbReader.HasRows == false)を { } 真の文が正常に動作しますが、レコードが存在しdoesntの場合はfalse文が実行されることはありませんを使用していました – user6097989

+0

訂正 - 何らかの理由で正常に動作しているようです。 HasRows()は完全に機能します。ありがとうございました – user6097989

関連する問題