几乎每修改一次页面(不动后台),哪怕是添加几个文字都会出现下面的错误,还有从某一页进入另一页,偶尔也会出现这种情况.怎么回事啊? 异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 源错误:
行 27: {
行 28:
行 29: conn.Open();
行 30:
行 31: }
怎么解决?谢谢!!有源码,请高手下载帮我看看!!
http://www.yuanshengkj.com/bbs/topic.asp?topic_id=1852&forum_id=26
行 27: {
行 28:
行 29: conn.Open();
行 30:
行 31: }
怎么解决?谢谢!!有源码,请高手下载帮我看看!!
http://www.yuanshengkj.com/bbs/topic.asp?topic_id=1852&forum_id=26
可以在打开之前判断一下,如果一关闭然后open
如果本身就是打开就不用再open了
{}
catch()
{}
finaly
{}
finaly
{}
中的closeConnection()放到
try{}中去...
我试了,但又出现这样的问题:
catch (Exception e)
行 273: {
行 274: throw new Exception(e.Message);
行 275:
行 276: }
public class DB
{
public static OleDbConnection Getconn()
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConnectionString"].ToString()));
if (conn.State.Equals(ConnectionState.Closed))
{
conn.Open();
}
return conn;
}
private static void closeConnection()
{
OleDbConnection conn = DB.Getconn();
OleDbCommand cmd = new OleDbCommand();
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
}
public static void binddatalist(string sql, DataList dl)
{
try
{
OleDbConnection conn = DB.Getconn();
DataSet ds = getdataset(sql);
dl.DataSource = ds.Tables[0].DefaultView;
dl.DataBind();
}
catch (Exception e)
{
throw new Exception(e.Message); }
finally
{
closeConnection();
}
}
}
然后在网页的后台引用如下:
string topsql1 = "select top 10 * from info order by hits,id desc";//教育动态
DB.binddatalist(topsql1, this.DataList1);
用一条这样的语句没问题,但当我加入第二条语句时
string topsql2 = "select top 10 * from info order by hits,id desc";//教育动态
DB.binddatalist(topsql2, this.DataList2);
就会出现上面这种情况,为什么?
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConnectionString"].ToString()));
if (conn.State.Equals(ConnectionState.Closed))
{ conn.Open(); }
return conn;
}这步不要返回对象,OleDbConnection设置为公共变量,上面的改成void执行open操作就行了
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Web;
namespace DAL
{
public class db
{ ///<summary>
/// 获得连接对象 ///</summary>
///<returns></returns> public static OleDbConnection GetOleDbConnection()
{
return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["db"].ToString()));
} private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, string cmdText, params object[] p)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
cmd.Parameters.Clear();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout =30;
if (p != null)
{ foreach (object parm in p)
{
cmd.Parameters.AddWithValue(string.Empty, parm);
}
}
} public static DataSet ExecuteDataset(string cmdText, params object[] p)
{ DataSet ds = new DataSet();
OleDbCommand command = new OleDbCommand();
using (OleDbConnection connection = GetOleDbConnection())
{
PrepareCommand(command, connection, cmdText, p);
OleDbDataAdapter da = new OleDbDataAdapter(command);
da.Fill(ds);
}
return ds; } public static DataRow ExecuteDataRow(string cmdText, params object[] p)
{
DataSet ds = ExecuteDataset(cmdText, p);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0];
}
return null;
} ///<summary>
/// 返回受影响的行数 ///</summary>
///<param name="cmdText">a</param>
///<param name="commandParameters">传入的参数</param>
///<returns></returns> public static int ExecuteNonQuery(string cmdText, params object[] p)
{
OleDbCommand command = new OleDbCommand();
using (OleDbConnection connection = GetOleDbConnection())
{
PrepareCommand(command, connection, cmdText, p);
return command.ExecuteNonQuery();
} } ///<summary>
/// 返回SqlDataReader对象
///</summary>
///<param name="cmdText"></param>
///<param name="commandParameters">传入的参数</param>
///<returns></returns> public static OleDbDataReader ExecuteReader(string cmdText, params object[] p)
{
OleDbCommand command = new OleDbCommand();
OleDbConnection connection = GetOleDbConnection();
try
{
PrepareCommand(command, connection, cmdText, p);
OleDbDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
catch
{
connection.Close();
throw;
} } ///<summary>
/// 返回结果集中的第一行第一列,忽略其他行或列
///</summary>
///<param name="cmdText"></param>
///<param name="commandParameters">传入的参数</param>
///<returns></returns> public static object ExecuteScalar(string cmdText, params object[] p)
{ OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection connection = GetOleDbConnection())
{
PrepareCommand(cmd, connection, cmdText, p);
return cmd.ExecuteScalar();
} } ///<summary>
/// 分页
///</summary>
///<param name="recordCount"></param>
///<param name="pageIndex"></param>
///<param name="pageSize"></param>
///<param name="cmdText"></param>
///<param name="countText"></param>
///<param name="p"></param>
///<returns></returns> public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)
{
if (recordCount < 0)
{
recordCount = int.Parse(ExecuteScalar(countText, p).ToString());
}
DataSet ds = new DataSet();
OleDbCommand command = new OleDbCommand();
using (OleDbConnection connection = GetOleDbConnection())
{
PrepareCommand(command, connection, cmdText, p);
OleDbDataAdapter da = new OleDbDataAdapter(command);
da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");
}
return ds;
} }}
给你个类吧