我在 ASP.NET 中创建一个访问数据库的类(这个类是一个登录名),但是在执行它时它向我显示以下错误:
System.Data.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
附加信息: 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());
}
}
您初始化连接 (
conStr
) 的值不正确或为空:可能是您收到错误的原因:
另一个细节可能是您没有正确初始化 SqlCommand:
您没有将连接分配
conObj
给您的对象SqlCommand comObj
。这应该解决它:
很明显,您没有在对象中分配
SqlCommand
SqlConnection
但如果你更好地定义参数,你也可以大大减少代码。
我建议您在块内定义连接对象,
using
以便正确销毁该对象,并让 ado.net 应用连接池来维护连接。