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);
Вам нужно инициализировать читателя, а затем прочитать его
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);
Попробуй это:
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();
}
То, что я сделал, чтобы сделать вещи намного проще с моей стороны, поскольку я в основном использую SQL повсюду, делаю некоторые расширения.
например
public static Int32 GetInt32(this SqlDataReader rdr, string column)
{
return Convert.ToInt32(rdr[column]);
}