Мои деньги лежат на методе выше в стеке вызовов, который использует исключение, потому что это должно было сгенерировать один, потому что соединение не было открыто.Это ваша самая большая проблема.
Следующая проблема, с которой вы столкнулись, заключается в том, что ваше соединение не связано с SqlCommand, поэтому даже если оно было открыто, это не имеет значения.
Наконец, connection.Open();
должно быть до ExecuteReader.
Кроме того, вам действительно следует использовать using
блоки.
{
String connectionString = Properties.Settings.Default.Database;
String selectString = "select artikelnummer, omschrijving from Artikels";
SqlDataReader reader = null;
using (SqlConnection connection = new SqlConnection(connectionString))
/* you also need to associate the connection with the command */
using (SqlCommand command = new SqlCommand(selectString, connection))
{
connection.Open();
reader = command.ExecuteReader();
int x = 0;
while (reader.Read())
{
String item = String.Empty;
item = Convert.ToString(reader["Artikelnummer"]) + "\t" + Convert.ToString(reader["Omschrijving"]);
x++;
listboxGeselecteerd.Items.Add(item);
}
}
}
Как насчет простой отладки в стиле "printf" и публикациивы получаете исключение?
try
{
connection.Open();
...
}
//catch (Exception e)
catch (SqlException e)
{
// at least one of these..
Console.WriteLine(e);
MessageBox.Show(e);
Debug.WriteLine(e);
var inner = e.InnerException;
while (inner != null)
{
//display / log / view
inner = inner.InnerException;
}
}
Учитывая, что текст исключения из комментариев (A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
) больше похож на сообщение, которое вы получили непосредственно перед тем, как появилось реальное сообщение, я бы поймал исключение SqlException и проверилInnerException (s).