日期:2014-05-19  浏览次数:20451 次

OleDb数据库动态连接问题
我在编写网站的时候使用的ACCESS数据库,需要动态连接数据库文件,我使用的ConnectionString是:
<add   key= "ConnectString "   value= "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=App_Data/webdata.mdb; "/>

我在本地测试的时候是正常的,但是上传到服务器后测试出现了错误,信息如下:

Server   Error   in   '/ '   Application.
'c:\windows\system32\inetsrv\App_Data\webdata.mdb '不是一个有效的路径。   确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
Description:   An   unhandled   exception   occurred   during   the   execution   of   the   current   web   request.   Please   review   the   stack   trace   for   more   information   about   the   error   and   where   it   originated   in   the   code.

Exception   Details:   System.Data.OleDb.OleDbException:   'c:\windows\system32\inetsrv\App_Data\webdata.mdb '不是一个有效的路径。   确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

Source   Error:

Line   34:                   OleDbDataAdapter   GetData   =   new   OleDbDataAdapter( "SELECT   *   FROM   Photos   ORDER   BY   Uptime ",myconn);
Line   35:                   DataSet   GetAll   =   new   DataSet();
Line   36:                   GetData.Fill(GetAll);
Line   37:  
Line   38:                   int   Records   =   GetAll.Tables[0].Rows.Count;


Source   File:   d:\webhost\qdssftp\web\App_Code\PhotoDB.cs         Line:   36  


请问我需要怎么做才能正确地创建一个动态连接数据库的语句呢?

------解决方案--------------------
读取的时候应该用:
Server.MapPath( "~/ ") + ConfigurationManager.AppSettings[ "ConnectString "];
得到数据库的路径。
------解决方案--------------------
<add key= "ConnectString " value=@ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + Server.MapPath( "./App_Data/webdata.mdb ") "
------解决方案--------------------
没有在IIS中做虚拟目录吧,或者虚拟目录有问题
------解决方案--------------------
建议将数据库路径写在绝对路径,这样就不用转换那么麻烦了。
<add key= "ConnectString " value= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\wwwroot\MyWebProject\App_Data\webdata.mdb; "/>

------解决方案--------------------
你路径搞错了.
------解决方案--------------------
路径 要绑定 根 目录 .

~app\dfs\sdfsdf\d.mdb
------解决方案--------------------
HttpContext.Current.Server.MapPath( "~/ ")