日期:2014-05-18  浏览次数:20519 次

郁闷!(这个问题 大家有遇到过吗?)
在我的项目里有一个类库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