之前发过:http://topic.csdn.net/u/20101022/16/d4596a4b-07fc-45f6-a2f2-fbfee071c981?32438
很多朋友也给了建议,但是我改来改去,问题依然存在,就是一会正常,一会不正常。求个位帮帮忙啊!!!!!
问题:
“/zhxy”应用程序中的服务器错误。
--------------------------------------------------------------------------------
ExecuteReader 要求已打开且可用的连接。连接的当前状态为已关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: ExecuteReader 要求已打开且可用的连接。连接的当前状态为已关闭。
OledbHelper 代码:
- C# code
public class OleDbHelper { static OleDbConnection conn = null; static OleDbCommand cmd = null; static string appPath = System.Web.HttpContext.Current.Request.ApplicationPath; static string connStr = "provider=microsoft.jet.oledb.4.0;data source="+System.Web.HttpContext.Current.Server.MapPath(appPath + "/App_Data/ZHXYDB.mdb")+""; public OleDbConnection OpenConnection() { try { //connStr = ConfigurationManager.ConnectionStrings["DBS"].ToString() + System.Web.HttpContext.Current.Server.MapPath(appPath + "/App_Data/ZHXYDB.mdb"); conn = new OleDbConnection(connStr); if (conn.State == ConnectionState.Closed) { conn.Open(); } } catch { } return conn; } public void CloseConnection() { if (conn.State == ConnectionState.Open) { conn.Close(); } } public void CloseConnection(OleDbConnection connection) { if (connection.State == ConnectionState.Open) { connection.Close(); } } public object DB_ExecuteScalar(string sqlStr) { OleDbConnection conn = OpenConnection(); cmd = new OleDbCommand(sqlStr, conn); return cmd.ExecuteScalar(); } public OleDbDataReader ExecuteOdr(string sqlStr, OleDbConnection conn) { cmd = new OleDbCommand(sqlStr, conn); OleDbDataReader odr = cmd.ExecuteReader(); return odr; } public int DB_ExecuuteNonQuery(string sqlStr) { OleDbConnection conn = OpenConnection(); cmd = new OleDbCommand(sqlStr, conn); int result = cmd.ExecuteNonQuery(); CloseConnection(conn); return result; } public DataTable DB_Fill(string sqlStr) { OleDbConnection conn = OpenConnection(); DataTable dt = new DataTable(); OleDbDataAdapter oda = new OleDbDataAdapter(sqlStr, conn); oda.Fill(dt); return dt; } }
引用 ExecuteOdr 方法的的代码:
- C# code
public MODEL.CompanyInfo GetModel(int id) { MODEL.CompanyInfo model = new MODEL.CompanyInfo(); OleDbConnection conn = helper.OpenConnection(); sqlStr = new StringBuilder(); sqlStr.Append("select * from CompanyInfo "); sqlStr.Append("where ID=" + id + ""); OleDbDataReader odr = helper.ExecuteOdr(sqlStr.ToString (), conn); if (odr.Read() == true) { model.ID = (int)odr[0]; model.InfoTitle = odr[1].ToString(); model.InfoContent = odr[2].ToString(); } odr.Close(); helper.CloseConnection(conn); return model; }
问题到底出在哪?求个位详加指点下,小弟新人,先致敬了!!!
------解决方案--------------------------------------------------------