asp.net 可以在webconfig中配置多个连接字符串吗?

如下所示,在webconfig中的链接字符串能这样写吗?我想访问那个数据库就访问哪个数据库<addkey="SQLConnString1"value="provider=... 如下所示,在webconfig中的链接字符串能这样写吗?我想访问那个数据库就访问哪个数据库<add key="SQLConnString1" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/zhishun.mdb"/>

<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/jyx.mdb"/>
我这样写报错,还有怎么在connectionStrings中写相对路径,解决者追加30分
展开
 我来答
kotcckot
2009-08-16 · TA获得超过144个赞
知道小有建树答主
回答量:278
采纳率:100%
帮助的人:116万
展开全部
Server.MapPath("/")得到物理路经

value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.Mappath("\db\global.mdb")+";" />

您可以把"db\global.mdb"单独放到web.config的一个属性里,然后程序通过Server.Mappath()得到物理路经物理路径,然后和Provider=Microsoft.Jet.OLEDB.4.0;Data Source=串起来得到完整的数据库连接串

不可以,程序会把Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.Mappath("db\global.mdb")+";当成字符串处理的

<add key="MM_CONNECTION_STRING_ds" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" />
<add key="Db" value="db\global.mdb" />
//////////

string connectionString = String.Format( ConfigurationSettings.AppSettings["connectionString"].ToString(), System.Web.HttpContext.Current.Server.MapPath( ConfigurationSettings.AppSettings["Db"].ToString() ) );

今天刚巧自己碰到了在web.config设置connectionStrings的问题, 翻了好些书, 只都说sql的设置方法,唯独破access被人遗忘到角落:那是只字未提啊~~

幸好,在visual studio 2005帮助文件里面有提及一些:

<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
</connectionStrings>

经过测试,这样设置是可以的,但是要放到租用的服务器上面是运行不了的,我需要的是相对路径的设置方法,在c#中虽然可以用 ~ 代替当前路径,可是运行后发现,当前路径在windows\system32\ 那是绝对不行的.

在网上发现有人用了特殊字符代替相对路径,然后在页面的后台代码中引用该字符串的时候用Server.MapPath()来代替那个特殊字符! 这个确实是一种好方法!不过还有更好的,就是ApplicationDeployment.DataDirectory----This property is new in the .NET Framework version 2.0.

最好的方法:

web.config配置

<configuration>
<appSettings/>
<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\atm.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
</connectionStrings>

...

测试程序

public string OpenDB()
{
string msg;
OleDbConnection MyOleDB = new OleDbConnection();
MyOleDB.ConnectionString = WebConfigurationManager.ConnectionStrings["MyJetConn"].ConnectionString;
try
{
MyOleDB.Open();
msg = "server vision:" + MyOleDB.ServerVersion + "connection is " + MyOleDB.State.ToString();
return (msg);
}
catch (Exception err)
{
msg = err.Message;
return (msg);
}
finally {
MyOleDB.Close();
}
}

输出:
server vision:04.00.0000connection is Open

补充说明:网站的代码的文件夹至少为iis虚拟目录的根目录,否则用本机http调试的时候会出现问题.

比如:

Line 26: ASP.NET to identify an incoming user.
Line 27: -->
Line 28: <authentication mode="Forms" />
Line 29: <!--
Line 30: The <customErrors> section enables configuration

ok,问题解决了,心情好多了,大家共享!
百度网友e3d7e62
2009-08-16 · TA获得超过360个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:398万
展开全部
可以阿,理论上写多少都可以。
只是一个值而已

关于相对路径转化,用的时候转化一下,Server.MapPath( Settins[SQLConnString] )
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
030603103
2009-08-17 · 超过28用户采纳过TA的回答
知道答主
回答量:163
采纳率:0%
帮助的人:90.9万
展开全部
可以 名字区别下就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式