executescalar连接的现阶段状态为已连接
executescalar连接的当前状态为已连接
------解决方案--------------------
重复使用静态的 SqlConnection 对象是个错误,正确的做法是每次查询都新建一个连接,打开,并且确保关闭(用 finally ),
许多人担心效率问题,其实不必考虑太多,配置连接池就好了。
//定义数据库链接属性
private static SqlConnection objSqlConnection;
/// <summary>
/// 获得数据库连接状态
/// </summary>
public static SqlConnection ObjSqlConnection
{
get
{
string DBConnectionString = ConfigurationManager.ConnectionStrings["NopSqlConnection"].ConnectionString;
if (objSqlConnection == null)
{
objSqlConnection = new SqlConnection(DBConnectionString);
objSqlConnection.Open();
}
else if (objSqlConnection.State == System.Data.ConnectionState.Closed)
{
objSqlConnection.Open();
}
else if (objSqlConnection.State == System.Data.ConnectionState.Broken)
{
objSqlConnection.Close();
objSqlConnection.Open();
}
return objSqlConnection;
}
}
public static void CloseConn()
{
if (objSqlConnection.State == ConnectionState.Open)
{
objSqlConnection.Close();
}
}
/// <summary>
/// 无参sql查询首行首列数据的方法
/// </summary>
/// <returns>返回首行首列的值</returns>
public static object GetScalerBySql(string sql)
{
SqlCommand objSqlCommand = new SqlCommand(sql, ObjSqlConnection);
return objSqlCommand.ExecuteScalar();
}
------解决方案--------------------
重复使用静态的 SqlConnection 对象是个错误,正确的做法是每次查询都新建一个连接,打开,并且确保关闭(用 finally ),
许多人担心效率问题,其实不必考虑太多,配置连接池就好了。