0

我一直在尝试找回贷款金额并希望它是浮动的。但是,loanAmount 返回值 0.0。顺便说一句,sql 语句只返回一个值。请帮忙?

SqlCommand cmd5 = new SqlCommand();
        cmd4.Connection = conn;
        cmd4.CommandText = "SELECT loanAmount FROM LoanPortfolio WHERE custID='" + custIDs + "' AND loanType LIKE 'Personal Loan'";
        conn.Open();
        float loanAmount = 0.0F;
        SqlDataReader amountLoan = cmd4.ExecuteReader();
        while (amountLoan.Read())
        {
            loanAmount = float.Parse(amountLoan.ToString());
            break;
        }
        conn.Close();
4

3 回答 3

4

如果您选择单个值,则使用 E​​xecuteScalar() 代替:

float loanAmount = Convert.ToFloat(cmd4.ExecuteScalar());

希望这可以帮助。

于 2013-08-01T10:30:25.913 回答
1

顺便说一句,sql语句只返回一个值

您仍然需要指定列:

 loanAmount = float.Parse(amountLoan[0].ToString());

存在更好的方法来获得该值,取决于列类型等。

于 2013-08-01T10:30:42.713 回答
0

从复数变量custIDsbreak(将您的命令文本修改为:

cmd4.CommandText = "SELECT loanAmount FROM LoanPortfolio WHERE custID IN (" + custIDs + ") AND loanType LIKE 'Personal Loan'";

确保这custId是客户 ID 的逗号分隔值字符串。您应该选择阅读器中的第一列:

float.Parse(amountLoan[0].ToString())

或使用SqlDataReader.GetFloat 方法

此外,您需要将返回值存储在某种集合(数组、列表等)中。现在,即使查询返回多条记录,您也只会获取最后一条记录的值。

于 2013-08-01T10:30:53.650 回答