Я имею интересное время, используя Statement ниже, который читает как этотSQLCommand Сбой Когда параметр соединения Не указан
SqlCommand RiskRevalCommand =
new SqlCommand("select * from CreditAdmin.dbo.CreditData_Test");
Я принял заявление SQL прямо из запроса в SQL Server Management Studio, так что я знаю она работает там, но теперь это вызывает исключение быть выброшено, когда программа пытается выполнить эту строку:
SqlDataReader reader = RiskRevalCommand.ExecuteReader();
и ошибка читает:
ExecuteReader: свойство Connection не инициализировано.
SqlConnection xavierConnection =
new SqlConnection("user id=FB\\user;" +
"password=password;" +
"server=dataserver;" +
"Trusted_Connection=yes;" +
"database=CreditAdmin;" +
"connection timeout=15");
try
{
xavierConnection.Open();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
try
{
SqlCommand RiskRevalCommand = new SqlCommand("select * from CreditAdmin.dbo.CreditData_Test");
SqlDataReader reader = RiskRevalCommand.ExecuteReader();
while (reader.Read())
{
try
{
double.TryParse(reader["Available Balance"].ToString(), out _availability);
...
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
//close the connection
try
{
xavierConnection.Close();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Что я должен изменить в моей SQL заявление так, что он не взорвется, и так, что я могу еще сделать TryParsing для полей?
Также как это происходит, когда this работает?
(Это то, что было в месте select *
я использую сейчас)
Что вам действительно нужно сделать, это положить SqlConnection, SqlCommand и SqlDataReader в 'using' блоков. Вам также необходимо удалить блоки try/catch. Возможно, у вас есть один на верхнем уровне, чтобы убедиться, что отображается MessageBox.Show. И в этом вы должны отображать 'ex.ToString()', а не 'ex.Message' –