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'我该怎么办
答案 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;