0

ローンの金額を取得しようとしていて、フロートにしたかったのです。しかし、loanAmount は 0.0 の値を返します。ところで、SQL ステートメントは 1 つの値のみを返します。助けてください?

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

単一の値を選択する場合は、代わりに ExecuteScalar() を使用します。

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

お役に立てれば。

于 2013-08-01T10:30:25.913 に答える
1

ところで、SQLステートメントは1つの値のみを返します

列を指定する必要があります。

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

列のタイプなどに応じて、その値を取得するより良い方法があります。

于 2013-08-01T10:30:42.713 に答える
0

複数形の変数名 ( ) から、複数の ID を渡しており、デバッグ/テスト目的でcustIDsを挿入したと推測されます。breakコマンド テキストを次のように変更します。

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 に答える