2

テーブルから int 値を読み取りたい。しかし、これは私のコードであるというエラーに直面しました。私のコードを編集するのを手伝ってください。

    sqlc = new SqlConnection(ConnectionString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;
    string username = HttpContext.Current.User.Identity.Name.ToString();

    cmd.CommandText = @"SELECT RemainedCharge "
                              + " FROM aspnet_Users "
                              + " WHERE UserName = @UserName ";
    cmd.Parameters.Add(new SqlParameter("@UserName", username));
    //string RemainedCharge;
    sqlc.Open();

    SqlDataReader rdr = cmd.ExecuteReader();


       // loop over all rows returned by SqlDataReader
       while(rdr.Read())
       {
          RemainedChargeLbl.Text=rdr.GetString(0);
       } 
4

3 に答える 3

3

1 つの値を読み取るには、リーダーは必要ありません。クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返すSqlCommand.ExecuteScalar メソッドを使用します。

int value = (int)cmd.ExecuteScalcar();

ところで、コマンドオブジェクトを作成する方が良いですsqlc.CreateCommand()-適切なコマンドを作成し、それに接続を自動的に割り当てます。

于 2013-11-30T07:13:32.233 に答える
2

このコードを使用してください:

  using (var conn = new SqlConnection(SomeConnectionString))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = "SELECT RemainedCharge "
                                  + " FROM aspnet_Users "
                                  + " WHERE UserName = @UserName ";
        cmd.Parameters.Add(new SqlParameter("@UserName", username);
        cmd.Parameters.AddWithValue("@id", index);
        using (var reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                learerLabel.Text = reader.GetString(reader.GetOrdinal("somecolumn"))
            }
        }

}
于 2013-11-30T07:15:14.910 に答える
2

connection object sqlcに割り当てていませんSqlCommand

これを追加:

 cmd.Connection=sqlc;

完全な解決策:

sqlc = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection=sqlc;
string username = HttpContext.Current.User.Identity.Name.ToString();

cmd.CommandText = @"SELECT RemainedCharge "
                          + " FROM aspnet_Users "
                          + " WHERE UserName = @UserName ";
cmd.Parameters.Add(new SqlParameter("@UserName", username));
//string RemainedCharge;
sqlc.Open();

 RemainedChargeLbl.Text =((int) cmd.ExecuteScalar()).ToString();
于 2013-11-30T07:15:15.037 に答える