Читайте целочисленные значения через Reader. (Sql-сервер)

1
con.Open();
cmd = new SqlCommand("USE PRODUCTS SELECT BOUGHT FROM " +
                     DropDownList1.SelectedItem.Text +
                     " WHERE ID = @ID", con);
cmd.Parameters.Add("ID", SqlDbType.Int).Value = DropDownList2.SelectedIndex;
int i = cmd.ExecuteReader().GetInt32(0);
con.Close();

Я не могу читать целые значения с таким читателем. Я получаю ошибку времени выполнения System.InvalidOperationException. Что не так с моим кодом? если вы не можете найти ошибку, можете ли вы объяснить, как я могу читать целые значения с помощью читателя? Кстати, эта часть кода дает ошибку:

int i = cmd.ExecuteReader().GetInt32(0);
Теги:
sql-server

3 ответа

0
Лучший ответ

Вам нужно инициализировать читателя, а затем прочитать его

using (SqlDataReader rdr = cmd.ExecuteReader())
{
  while (rdr.Read()) // or just rdr.Read() if you know only one row is returned
  {
    int i = rdr.GetInt32(0);
1

Попробуй это:

int x=0;
using (
SqlConnection connection = new SqlConnection(strCon))
{
    SqlCommand command = new SqlCommand(sql_string, connection);
    connection.Open();
    DataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            x = reader.GetInt32(0);
        }
    } 

    reader.Close();
}
0

То, что я сделал, чтобы сделать вещи намного проще с моей стороны, поскольку я в основном использую SQL повсюду, делаю некоторые расширения.

например

public static Int32 GetInt32(this SqlDataReader rdr, string column)
{
     return Convert.ToInt32(rdr[column]);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню