2013-11-30 2 views
1

Я хочу прочитать значение int из моей таблицы. но я столкнулся с ошибкой это мой код. пожалуйста, помогите мне изменить свой код.Как использовать execereader для чтения одного значения

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

ответ

3

Чтобы прочитать одно значение, вам не нужен считыватель. Используйте SqlCommand.ExecuteScalar Method, который выполняет запрос и возвращает первый столбец первой строки в наборе результатов, возвращенный запрос:

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

Кстати, лучше создать объект команды с sqlc.CreateCommand() - он создает соответствующую команду и автоматически назначает подключение к нему.

2

Используйте этот code:

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")) 
      } 
     } 

} 
1

Вы не назначая 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(); 
Смежные вопросы