在运行时使用未分配的局部变量

时间:2012-11-19 13:28:45

标签: c# wpf sql-server-2005

wpf应用程序实际上我创建了帐户应用程序我去了显示开放amt。打开amt等于dr_amt-cr_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这个代码我看到错误使用未分配的局部变量'a'和'b'我该怎么办

2 个答案:

答案 0 :(得分:2)

  

在bulid这段代码中我看到错误使用未分配的局部变量'a'和'b'

是的,你会的。它们没有明确分配,因为您的while循环可能无法执行。

如果没有行,您会期望结果是什么?这个问题的答案将决定你应该做什么。 (另外,如果更多而不是一行,那么只有最后一行会对结果产生影响 - 这是故意的吗?)

例如,你可以只给它们值:

double a = 0, b = 0, c;

如果没有行,那么结果为0。如果这就是你想要的......

(我会尽可能晚地声明变量,请注意。)

此外,使用参数化SQL。您当前的代码容易受到SQL injection attacks的攻击。哦,并使用using语句确保正确关闭命令和异常。

答案 1 :(得分:0)

你需要设置a和b,因为当dr中没有数据时,while循环甚至不会执行一次迭代。

double a = 0, b = 0, c;
相关问题