Как решать ошибку ExecuteScalar: свойство Connection не инициализировалось?

Я создаю класс в ASP.NET, что соглашается на базу данных (этот класс - login), но в момент выполнения ее показывает мне следующую ошибку:

An exception of type 'System. InvalidOperationException' occurred in System.Data.dll but was not handled in user code

Additional information: ExecuteScalar: свойство Connection не инициализировалось.

Полный код - следующий:

 public class UserBusinessLogic
{
    public int CheckUserLogin(ClsLogin User)
    {
        string conStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        SqlConnection conObj = new SqlConnection(conStr);
        SqlCommand comObj = new SqlCommand();
        comObj.CommandType = CommandType.StoredProcedure;
        SqlParameter Parameters = new SqlParameter();

        Parameters = new SqlParameter();
        Parameters.Direction = ParameterDirection.Input;
        Parameters.SqlDbType = SqlDbType.VarChar;
        Parameters.Size = 150;
        Parameters.ParameterName = "@NombreUsuario";
        Parameters.Value = User.NombreUsuario;

        Parameters = new SqlParameter();
        Parameters.Direction = ParameterDirection.Input;
        Parameters.SqlDbType = SqlDbType.VarChar;
        Parameters.Size = 20;
        Parameters.ParameterName = "@Contrasena";
        Parameters.Value = User.Contrasena;

        conObj.Open();

        return Convert.ToInt32(comObj.ExecuteScalar());

    }
}
0
задан 15.03.2016, 00:35
3 ответа

Ты не распределяешь связь conObj в твой объект SqlCommand comObj.

Это было бы должно решать это:

SqlCommand comObj = new SqlCommand("<nombre del procedure>", conObj);
1
ответ дан 24.11.2019, 14:44

Твоя стоимость инициализировать ее conexiГіn (conStr) не правильна или - vacГ - или:

string conStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
SqlConnection conObj = new SqlConnection(conStr);

может быть одним razГіn из-за той, которая ты получаешь ошибку:

An exception of type 'System. InvalidOperationException' occurred in System.Data.dll but was not handled in user code

Additional information: ExecuteScalar: свойство Connection не инициализировало

TambiГ©n другая деталь могла состоять в том, что ты не инициализируешь правильно SqlCommand:

SqlCommand cmd = new SqlCommand(mi_Query, conObj);
1
ответ дан 24.11.2019, 14:44

Ясно, что ты не распределяешь в объекте SqlCommand

  • имя stored procedure
  • инстанция SqlConnection

, но кроме того ты мог бы уменьшать много cГіdigo, если ты определяешь лучше параметры.

public class UserBusinessLogic
{
    public int CheckUserLogin(ClsLogin User)
    {
        string conStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        using(SqlConnection conObj = new SqlConnection(conStr))
        {
            conObj.Open();

            SqlCommand comObj = new SqlCommand("<<nombre procedure>>", conObj);
            comObj.CommandType = CommandType.StoredProcedure;

            comObj.Parameters.Add("@NombreUsuario", SqlDbType.VarChar).Value = User.NombreUsuario;
            comObj.Parameters.Add("@Contrasena", SqlDbType.VarChar).Value = User.Contrasena;

            return Convert.ToInt32(comObj.ExecuteScalar());
        }
    }
}

Я Рекомендую определи объект связи внутри блока using из этой формы объект разрушается формы corecta и ты позволяешь, чтобы он ado.net применил connection pooling , чтобы поддерживать связи

0
ответ дан 24.11.2019, 14:44
  • 1
    Одну спрашивает Леандро, ты знаешь, если когда инстанция SqlConnection, и #191; возможно добавлять Query и " Коннектион String"?, например Скльконнектион (QueryandConnString), seg и # 250; n я помню tambi и # 233; n pod и # 237; в... – Jorgesys♦ 15.03.2016, 02:18
  • 2
    @Elenasys докуда я не знаю никогда я увидел, что объект связи получал query. В объекте одиноком SqlConnection возможно определять connection string, query определяется в SqlCommand, это может быть видно в строителях класса msdn.microsoft.com/es-es/library/… – Leandro Tuttini 15.03.2016, 02:31