ConnectionString 属性尚未初始化。
被调用的方法:public DataSet SelectToDataSet(string SQL, string subtableName)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataSet Ds = new DataSet();
adapter.Fill(Ds, subtableName);
return Ds;
}
sql语句:select top 20 [ID] from [Zk_User] where 1=1 order by [ID] Desc
执行句:DataSet ds = db.SelectToDataSet(sql1,"table");
两次执行,执行句之后就会报ConnectionString 属性尚未初始化。
我的连接数据库类:
public class AccessDb
{
public OleDbConnection Conn;
public string ConnString;//连接字符串
public AccessDb()
{
ConnString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
ConnString += HttpContext.Current.Server.MapPath("~/database/datadat.mdb");
Conn = new OleDbConnection(ConnString);
Conn.Open();
}
//。。。。。
} --------------------编程问答-------------------- 你跟踪一下Conn.ConnectionString 是否为空 --------------------编程问答-------------------- ConnectionString 属性尚未初始化 --------------------编程问答-------------------- 第一次执行没问题的,第二次在次执行就开始报错误了。
错误异常:
源错误:
行 65: DataSet Ds = new DataSet();
行 66: //Ds.Tables.Add(subtableName);
行 67: adapter.Fill(Ds, subtableName);
行 68: return Ds;
行 69: }
源文件: f:\web\net\App_Code\AccessDb.cs 行: 67
堆栈跟踪:
[InvalidOperationException: ConnectionString 属性尚未初始化。]
System.Data.OleDb.OleDbConnection.PermissionDemand() +996487
System.Data.OleDb.OleDbConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.OleDb.OleDbConnection.Open() +40
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +31
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +112
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +92
AccessDb.SelectToDataSet(String SQL, String subtableName) in f:\web\net\App_Code\AccessDb.cs:67
ExecuteSql.getRecord(String table, String Hql, String order, Int32 currentindex, Int32 pagesize, String mainkey) in f:\web\net\App_Code\ExecuteSql.cs:74
admin_admin_ManPeoUser.bind() in f:\web\net\admin\admin_ManPeoUser.aspx.cs:36
admin_admin_ManPeoUser.AspNetPager1_PageChanging(Object src, PageChangingEventArgs e) in f:\web\net\admin\admin_ManPeoUser.aspx.cs:74
Wuqi.Webdiyer.AspNetPager.OnPageChanging(PageChangingEventArgs e) +144
Wuqi.Webdiyer.AspNetPager.OnLoad(EventArgs e) +429
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
--------------------编程问答-------------------- 第一步:申请链接
SqlConnection con = new SqlConnection(strConnection);
第二步:申请执行对象
SqlCommand com = new SqlCommand(strSql, con);
第三步:做想做的数据库操作
还是回去把理论学习学习再来问吧。书都不看问什么...
string strConnection = "server=.;database=student;uid=sa;pwd=sa";
SqlConnection con = new SqlConnection(strConnection);
SqlCommand com = new SqlCommand(strSql, con);
con.Open();
//下面做你要做的数据库操作 --------------------编程问答-------------------- 断点调试,看Con是否为Null
--------------------编程问答-------------------- 保证ConnectionString 有值 断点跟一下看! --------------------编程问答-------------------- 你只贴了创建connnection的片段和sql访问的片段 其他地方怎么调用的不清楚,你是否在调用完有明确的关闭连接?而下次调用的时候没有重新打开连接?如果都不是你还是具体自己调试下吧,问题很明显第二次connection 为null 自己断点调试 ,监视连接变量看下 --------------------编程问答-------------------- 如何初始化呢? 上面已经有了连接字符串了,怎么初始化ConnectionString --------------------编程问答-------------------- Conn的构造函数需要连接字符串 断点过去看看 --------------------编程问答--------------------
是的 第一次取到了连接字符串,在一次执行的时候就也不是空 错误是:ConnectionString = 由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值。 --------------------编程问答--------------------
conn不为空 ConnectionString = 由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值。 这是什么原因导致的。。。 --------------------编程问答-------------------- 你的错误我也搜索了下 没有得到合适的答案 你这样先试下把connectionstring给成固定的路径文件,然后看看会不会有这个问题我只是怀疑 “HttpContext.Current.Server.MapPath("~/database/datadat.mdb");” 这段 但不十分肯定 你试下固定路径 --------------------编程问答--------------------
改了之后 ServerVersion = “Conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常 conn为空了
--------------------编程问答-------------------- 不是 ,我意思是你先随便用这样 Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:\database\datadat.mdb"这样固定的access路径而不是用程序中动态获取当前程序运行所在目录的路径 先这样试试connection看还会异常不会 --------------------编程问答-------------------- Conn.open();
--------------------编程问答-------------------- 我也遇到了这样的问题 也在寻求方案中
补充:.NET技术 , ASP.NET