首页 新闻 会员 周边

Access数据库路径问题?请教!

0
悬赏园豆:20 [已关闭问题]

小弟最近做一个WinForm项目,使用Access数据库,路劲问题困扰了我好久。我是用的App.Config来配置路劲的。想必大家都看过PetShop这个实例吧?我就是用的OledbHelpDao来做的。我在App.Config是这样配置的:

Code

路劲要给绝对路径。

在获取这个路劲我是新建一个类库DBUtility,其中包括数据库操作类OledbHelpDao和连接类Constance,在Constance我是这样写的:

Code

在读数据库的时候这样写:

Code

Access不像SQL,要给绝对路径。ExecuteReader方法中的传的是(数据库连接字符串,连接类型,sql语句)

我按照网上朋友们给的方法去获取App.Config里面的信息 在Config中:

Code

获取配置文件的时候是这样:

Code

如果像网上朋友们这样用Server.MapPath方法去获取的话会得到“DBUtility.Constance”的类型初始值设定项引发异常。”这样的异常。

希望大家介绍种用OledbHelpDao方法怎么获取Access数据库的相对路径,小弟万分感谢。

something的主页 something | 初学一级 | 园豆:5
提问于:2009-08-25 10:37
< >
分享
其他回答(5)
0

办法很多,

1.一般数据库放在安装程序目录下,你可以通过Application.StartupPath 来获取程序执行路径。

2.相对路径可以转成绝对路径:FileInfo fi=new FileInfo("相对路径");fi.FullName就是绝对路径。

吴畏 | 园豆:426 (菜鸟二级) | 2009-08-25 10:44
0

好多朋友被ACCESS数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config
中数据库连接字符串的数据库路径。

好多人的web.config中的写法如下:

<appSettings>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\web\App_Data\Data.mdb)"></add>
</appSettings>

程序中这样写:

MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]); //注释一下:VS2005和VS2003中的ConfigurationSettings写法不一样,具体区别自己查吧

这样程序运行时经常提示诸如以下的错误:
'C:\WINDOWS\system32\~\App_Data\Data.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 Data Source=~\App_Data\Data.mdb
就算用绝对路径正确,那么移植程序时还要去修改web.config,所以比较麻烦。

也有在web.config中使用象ASP那样的Server.MapPath取数据库路径的,但web.config不认识Server.MapPath,此方法也行不通。

后来通过摸索、参考其它程序,总结出如下方法,可以方便的移植程序路径而不必再去修改ACCESS数据库路径。

我在web.config中的写法如下:

<appSettings>
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
程序中的数据访问类中我把"SQLConnString"和"dbPath"取出来连接成一个字符串"CONN_STRING_NON_DTC"
public static readonly string CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangqiao840405/archive/2009/07/07/4328370.aspx

握薪尝蛋 | 园豆:145 (初学一级) | 2009-08-25 13:45
0

可以用 server.maypath(相对路径)

request 里面有属性,可以取到当前应用程序的物理路径,在配置一些你的文件 相对路径就可以了

Mr雨 | 园豆:1199 (小虾三级) | 2009-08-25 13:46
0

1楼、二楼 正解。

邢少 | 园豆:10926 (专家六级) | 2009-08-26 08:29
0

如果你做的是winform请使用1楼的做法。

如果是webform请使用2楼的做法。

侯垒 | 园豆:3435 (老鸟四级) | 2009-08-26 11:09
0

最好的方法,怎么改路径都不用动程序

web.config里:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="MBS_OleDbConn" connectionString="MessageBoard/DB.asa"/>
  </connectionStrings>

程序里:

public static readonly string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Request.ServerVariables["APPL_PHYSICAL_PATH"] + ConfigurationManager.ConnectionStrings["MBS_OleDbConn"].ConnectionString;

红尘中迷茫 | 园豆:60 (初学一级) | 2009-08-26 22:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册