Свойство connectionString не инициализировано свойство sqlcommand, но код все еще работает
Я всегда был поклонником "если он не сломался, не исправляйте его"
но мой код, хотя и функционирует, выбрасывает свойство connectionstring не было инициализировано сообщением. подобные сообщения предполагают, что строка conneciton равна null-поэтому я добавил if IsNullOrEmpty
вокруг моей команды открытия соединения. что является линией, создающей исключение. Примечание: моя строка подключения была восстановлена из базы данных строк подключения. это код на C# за файл .страница ASPX. Заранее спасибо за любые предложения относительно причины исключения.
Код:
using (SqlConnection sconn = new SqlConnection(someconnectionstring.Value.ToString()))
{
using (SqlCommand scmd = new SqlCommand("mydb.[dbo].[myStoredProc]", sconn))
{
scmd.CommandType = CommandType.StoredProcedure;
scmd.Parameters.Add("@valueX", SqlDbType.VarChar).Value = 2;
scmd.Parameters.Add("@returnValue", SqlDbType.Int);
scmd.Parameters["@returnValue"].Direction = ParameterDirection.Output;
//testing for null as suggested...
if (!string.IsNullOrEmpty(sconn.ToString()) || sconn.ToString() != "") //the || != "" may be double work.. not sure
{
sconn.Open(); //code throw exception here but continues to work.
SqlDataReader adar = scmd.ExecuteReader();
if (adar.HasRows)
{
while (adar.Read())
{
hiddenfieldX.Value = adar["valueX"].ToString();
...
}
sconn.Close();
}
}
}
}
}
catch (SqlException er)
{
//The ConnectionString property has not been initialized thrown here
}
1 ответ:
Как указано в сопряжениях, строка соединения может быть нулевой или плохо сформированной.
1-Проверьте правильность строки подключения (вы можете отправить ее, и мы можем проверить)
2-Ваш код будет лучше, если он будет выглядеть следующим образом:
string someconnectionstring = "yourConnectionString"; if (!string.IsNullOrEmpty(someconnectionstring)) { using (SqlConnection sconn = new SqlConnection(someconnectionstring)) { using (SqlCommand scmd = new SqlCommand("mydb.[dbo].[myStoredProc]", sconn)) { scmd.CommandType = CommandType.StoredProcedure; scmd.Parameters.Add("@valueX", SqlDbType.VarChar).Value = 2; scmd.Parameters.Add("@returnValue", SqlDbType.Int); scmd.Parameters["@returnValue"].Direction = ParameterDirection.Output; sconn.Open(); //code throw exception here but continues to work. SqlDataReader adar = scmd.ExecuteReader(); if (adar.HasRows) { while (adar.Read()) { //... } } sconn.Close(); } } }