郁闷!(这个问题 大家有遇到过吗?)
在我的项目里有一个类库DbClass 里有一个Dbconn.cx
private OleDbConnection conn=new OleDbConnection(System.Configuation.ConfiguationSettings.AppSetting[ "connstr "].Tostring()+System.Configuation.ConfiguationSettings.AppSetting[ "dbpath "].Tostring())
private void OpenConn()
{
conn.open();
}
项目下还有一个WebUI 有一个default.aspx ,三个文件夹分别为 admin 和 Controls
admin 里有 login.aspx .Controls 里有ucontrl.ascx . DataFiles 下有个xx.mdb
文件。
WebUI 下的 web.config 里有
<appSettings>
<add key= "connstr " value= "provider=microsoft.jet.oledb.4.0;Data Source= " />
<add key= "dbpath " value= "DataFiles/xx.mdb " />
</appSettings>
在default.aspx,ucontrl.ascx,login.aspx 都会调用到conn.open() 这个函数。
在default.aspx,ucontrl.ascx 里都是正常的。在login.aspx 下就不正常啦!
它提示数据文件路径不对。
在default.aspx 和ucontrl.ascx 里显示的数据库路径是
d:\my document\gxq\WebUI\DataFiles\xx.mdb 这个是正确的。
在login.aspx 里 它找出的路径是
d:\my document\gxq\WebUI\admin\DataFiles\xx.mdb 所以它找不到数据文件
为什么会出现这样的问题呢?
为什么ucontrol不会这样?
高手们给点意见。
------解决方案-------------------- <add key= "dbpath " value= "DataFiles/xx.mdb " /> 用绝对路径,
因为你的login.aspx在admin文件夹里,所以才会是
d:\my document\gxq\WebUI\admin\DataFiles\xx.mdb
------解决方案--------------------把 <add key= "dbpath " value= "DataFiles/xx.mdb " /> 这句改为
<add key= "dbpath " value= "/DataFiles/xx.mdb " /> 试试
------解决方案--------------------你的连接语句是错的
用绝对路径不要用相对路径
给你个例子
<add name= "sconn " connectionString= "Provider=Microsoft.Jet.OleDb.4.0 ;Data Source=|DataDirectory|\data.mdb "/>
放在ms自带的app_data文件夹下面的名为data.mdb的数据库
------解决方案--------------------因为你的login.aspx是在admin下的.
所以DataFiles/xx.mdb这个就不对了.
------解决方案--------------------ucontrl.ascx
中是根据调用页面的位置确定的.
------解决方案--------------------value= "/虚拟目录名称/DataFiles/xx.mdb "
------解决方案--------------------如果是asp2.0
就可以
value = "~/DataFiles/xx.mdb "
------解决方案--------------------private OleDbConnection conn=new OleDbConnection(System.Configuation.ConfiguationSettings.AppSetting[ "connstr "].Tostring()+System.AppDomain.CurrentDomain.BaseDirectory //根目录(例:C:\Inetpub\wwwroot\test\)
+System.Configuation.ConfiguationSettings.AppSetting[ "dbpath "].Tostring())
------解决方案--------------------数据库后辍名改一下,不然会被下载的
例如改成.config