Возвращать значения из SQL Server в C# конвертировать ToArray?
Сейчас я работаю над заданием, пытаюсь получить значения из базы данных SQL Server и сохранить их в массиве. Мое соединение в порядке, но у меня проблемы с помещением возвращаемых значений в массив.
Вот что я получил, немного изменил с тех пор, как задал вопрос:
public int Bay;
int temp;
[DataContract]
public Garage()
{
List<Garage> Bays = new List<Garage>();
SqlConnection connection = new SqlConnection("Data Source=fastapps04.qut.edu.au;Initial Catalog=*******;User ID=******;Password=******");
connection.Open();
SqlCommand command = new SqlCommand("SELECT Bay FROM Garage", connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
temp = reader.GetOrdinal("Bay");
Bays.Add(temp);
}
Bays.ToArray();
reader.Close();
connection.Close();
}
Получение ошибки в
Bays.Add(temp)
3 ответа
Изменить заливы на List<int>
и вернуть либо список, либо вызов .ToArray()
в списке. Также используйте Using
операторы со связями и командами.
List<int> Bays = new List<int>();
using(SqlConnection connection = new SqlConnection("connString"))
{
connection.Open();
using (SqlCommand command = new SqlCommand("SELECT Bay FROM Garage",
connection))
{
using (SqlDataReader reader= command.ExecuteReader())
{
while (reader.Read())
{
Bays.Add(reader.GetInt32(reader.GetOrdinal("Bay")));
}
}
}
}
.....
Каждый звонок reader.Read()
продвинет читателя к следующему ряду вашего набора результатов. Вы, кажется, предполагали, что вы можете получить все строки в вашем массиве за одно чтение.
Если вы измените свой код так, чтобы вы просто добавили temp
к вашему массиву на каждой итерации while
Цикл вы должны найти, что это работает.
Я бы набрал код, но я на своем телефоне.:)
Небольшая модификация должна быть сделана в вашем коде, чтобы получить желаемый результат, необходимый вам.
public Garage()
{
SqlConnection connection = new SqlConnection("Data Source=fastapps04.qut.edu.au;Initial Catalog=*******;User ID=******;Password=******");
connection.Open();
SqlCommand command = new SqlCommand("SELECT Bay FROM Garage", connection);
SqlDataReader reader = command.ExecuteReader();
List<Garage> listBays =new List<Garage>();
while (reader.Read())
{
temp = reader.GetInt32(reader.GetOrdinal("Bay"));
listBays.Add(temp);
}
Garage[] Bays=listBays.ToArray();
reader.Close();
connection.Close();
}