0

wpf アプリケーション 実際にアカウント アプリケーションを作成します。dr_amt-cr_amt に等しい開始 amt 。dr_amt と cr_amt は、そこにある amt テーブルの列名です。

double a, b, c;

SqlConnection con = new SqlConnection("my conn");

SqlCommand cmd = new SqlCommand("select sum(dr_amt),sum(cr_amt) from amt where id='"+tex1.Text+"'", con);


con.Open();

SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())

{
    a = Convert.ToDouble(dr[0]);
    b = Convert.ToDouble(dr[1]);
}
c = a - b;

textBox3.Text =Convert.ToString( c);

このコードの bulid で、エラー Use of unassigned local variable'a' and 'b' が表示されますどうすればよいですか

4

2 に答える 2

2

このコードをビルドすると、割り当てられていないローカル変数 'a' と 'b' の使用というエラーが表示されます

はい、そうします。whileループが実行されない可能性があるため、確実に割り当てられているわけではありません。

行がない場合、結果はどうなると思いますか? その質問に対する答えによって、あなたが何をすべきかが決まります。(また、複数の行がある場合、最後の行のみが結果に寄与します - それは意図的なものですか?)

たとえば、最初から値を指定するだけです。

double a = 0, b = 0, c;

行がない場合、結果は 0 になります。それがあなたの望むものなら...

(変数はできる限り遅く宣言しますが、気にしないでください。)

また、パラメータ化された SQL を使用してください現在のコードは、SQL インジェクション攻撃に対して脆弱です。ああ、usingステートメントを使用して、コマンドと例外を適切に閉じるようにしてください。

于 2012-11-19T13:30:56.457 に答える
0

a と b を設定する必要があるのは、dr にデータがない場合、while ループが 1 回も反復を実行しない可能性があるためです。

double a = 0, b = 0, c;
于 2012-11-19T13:31:40.767 に答える