Свойство 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 2

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();
        }
    }
}