public object MyExecuteScalar(string strSQL, SqlParameter[] arrParameter) { SqlConnection Conn = new SqlConnection(Data_Basic.strConn); Cmd = new SqlCommand(strSQL,Conn); if (!MetarnetRegex.IsSQL(strSQL)) { Cmd.CommandType = CommandType.StoredProcedure; } if (arrParameter != null) { for (int num1 = 0; num1 < arrParameter.Length; num1++) { Cmd.Parameters.Add(arrParameter[num1]); } } Conn.Open(); object obj1 = Cmd.ExecuteScalar(); Conn.Close(); return obj1; }
报了一个错
ExecuteScalar 要求已打开且可用的连接。连接的当前状态为已关闭。
指向的是这个方法
Conn.Open();要写在前面,调用的时候你这个连接没有打开
调试进这个方法看看呗,
应该是数据库连接的问题,
你查看一下你的数据库连接串是不是有问题.
Conn.Open();写在
SqlConnection Conn = new SqlConnection(Data_Basic.strConn);这句后面试试
using(
SqlConnection Conn = new SqlConnection(Data_Basic.strConn)
)
{
Conn.open();
var cmd = Conn.CreateCommand();
if (!MetarnetRegex.IsSQL(strSQL)) { Cmd.CommandType = CommandType.StoredProcedure; } if (arrParameter != null) { for (int num1 = 0; num1 < arrParameter.Length; num1++) { Cmd.Parameters.Add(arrParameter[num1]); } }
object obj1 = Cmd.ExecuteScalar();
return obj1;
}
很明显数据库连接没有打开,在执行Cmd.ExcuteScallar之前,要加上cmd.Connection.Open();
连接字符串有问题呗。