0

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);

在构建此代码时,我看到错误使用未分配的局部变量'a'和'b'我该怎么做

4

2 回答 2

2

在构建此代码时,我看到错误 Use of unassigned local variable'a' and 'b'

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

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

例如,您可以只给它们值以开始:

double a = 0, b = 0, c;

如果没有行,这将为您提供 0 的结果。如果那是你想要的...

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

此外,使用参数化 SQL。您当前的代码容易受到SQL 注入攻击。哦,使用using语句来确保您适当地关闭命令和异常。

于 2012-11-19T13:30:56.457 回答
0

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

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