一个小问题、关于获取Configuration.ConnectionStrings的问题。

小宁_z 2014-07-31 05:56:49

有一段代码如下:
DataBaseName += "ConnectionString";
DataBaseName = "\"" + DataBaseName + "\"";
MessageBox.Show(DataBaseName);

MessageBox.Show(ConfigurationManager.ConnectionStrings["fiveConnectionString"].ConnectionString);

if (ConfigurationManager.ConnectionStrings[@DataBaseName].ConnectionString != null && ConfigurationManager.ConnectionStrings[DataBaseName].ConnectionString.Equals(""))
{
// MySqlDBHelper.connstr = ConfigurationManager.ConnectionStrings[DataBaseName].ConnectionString;
MessageBox.Show(ConfigurationManager.ConnectionStrings[DataBaseName].ConnectionString);
}

现在是我通过ConfigurationManager.ConnectionStrings["fiveConnectionString"].ConnectionString)来获取连接字符串是能够获取到的、但是、我这里是想通过不同的DataBaseName来获取不同的数据库连接字符串。
那么我直接通过ConfigurationManager.ConnectionStri。ngs[@DataBaseName].ConnectionString这种方式提示未将引用实例化这种错误看起来很低级啊、第一次遇到这种情况
就是ConnectionString["索引名称"]的形式。
...全文
531 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小宁_z 2014-08-01
  • 打赏
  • 举报
回复
引用 7 楼 Z65443344 的回复:
fiveConnectionString和'fiveConnectionString'不是同一个字符串,不要乱加单引号
这个我都试过了、ConfigurationManager.ConnectionStrings["fiveConnectionString"]能获取到值的 ConfigurationManager.ConnectionStrings[DataBaseName]就为Null、这个DataBaseName Debug下的值和"fiveConnectionString"是一样的。可就是获取不到值。
於黾 2014-08-01
  • 打赏
  • 举报
回复
你直接DataBaseName="fiveConnectionString"; 不就得了,画蛇添足了
於黾 2014-08-01
  • 打赏
  • 举报
回复
fiveConnectionString和'fiveConnectionString'不是同一个字符串,不要乱加单引号
小宁_z 2014-08-01
  • 打赏
  • 举报
回复
引用 2 楼 u010566673 的回复:
[quote=引用 1 楼 wmingcsharp 的回复:] [@DataBaseName 你这是什么玩艺,你为什么加@
这个就是一个字符串、里面是"ConnectionString"[/quote] 嗯,你好啊 ConfigurationManager.ConnectionStrings["fiveConnectionString"]这个是能获取到了,我在配置文件中加了这个节点 然后 由于我是想要动态获取,比如节点里还有SixConnectionString,。 然后我这样把fiveConnectionString"构造成一个字符串比如叫DataBaseName=@"""+"fiveConnectionString"+"""; 然后通过ConfigurationManager.ConnectionStrings[DataBaseName]获取到。这样为啥就未提示没有实例化呢。 这个DataBaseName就是fiveConnectionString"啊。
於黾 2014-08-01
  • 打赏
  • 举报
回复
程序是不会自动知道你想连接的每个数据库到底连接字符串都是什么的,需要你一个一个告诉他 之前应该是将一个固定的字符串放到config文件里,然后运行的时候读出来放变量里等着用 你想配置多个字符串,首先就要重新设计config文件,把字符串都放进去 然后读的时候,设计一下,怎么存 用的时候对应着用.
於黾 2014-08-01
  • 打赏
  • 举报
回复
右键->转到定义 右键->查找所有引用 好好看看原来都是怎么用的,然后根据你的需求做相应的改动
於黾 2014-08-01
  • 打赏
  • 举报
回复
你先研究明白ConfigurationManager.ConnectionStrings["fiveConnectionString"].这个东西是怎么来的,在哪里定义,从哪里赋值 程序没有那么神奇,不是你想从变量里读什么,它里面就有什么. 你想让它有,首先你得给它
小宁_z 2014-08-01
  • 打赏
  • 举报
回复
引用 1 楼 wmingcsharp 的回复:
[@DataBaseName 你这是什么玩艺,你为什么加@
这个就是一个字符串、里面是"ConnectionString"
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
ConnectionStrings是静态字段,键值对集合,如果你的数据库比较多,你完全可以自己实现一个类似的管理类 获取的时候,跟那个就没什么两样
//定义一个静态成员用来获取
public class ConnectionStringsController 
{
public static  ConnectionStringsController ConnectionStrings = new ConnectionStringsController ()

private static Dictionary<string, string> _buffer ;

//静态构造函数
static ConnectionStringsController()
{
         _buffer = new Dictionary<string, string>;
         把拼好的连接字符串都添加至_buffer中         //为了维护方便,那些baseName最好放在配置中
}

public  this[string baseName]
{
           get
          {
                    return _buffer[baseName];   //若库名不对将抛异常                    
          }
}
}
使用ConnectionStringsController.ConnectionStrings [baseNmae]
angle860123 2014-08-01
  • 打赏
  • 举报
回复
定义一个数据库连接字符串枚举类EnumConnectionString pubic enum EnumConnectionString { DataBaseName1=0, DataBaseName2=1, ........... } 操作数据库的时候根据业务的不同把数据库名枚举传到数据操作类里面,给sqlConnection赋值就好了
zhrongr 2014-08-01
  • 打赏
  • 举报
回复
我之前也碰到过根据不同名称,连接不同数据库。我的做法是,在前台拖一个DropDownList,通过下拉框值的不同,在代码中判断连接哪个数据库
mingcsharp 2014-07-31
  • 打赏
  • 举报
回复
[@DataBaseName 你这是什么玩艺,你为什么加@
用于加密.net WebForm的Web.Config文件中的数据库连接字符串. 本软件支持.net 2.0 和 .net 4.0. 注意事项: 1.需要安装.net4.0运行库才能运行. 2.程序中需要获取web.config路径时,可以使用复制把web.config所在路径粘贴到程序中.快捷键不是Ctrl + V而是右键选择"编辑"-"粘贴".如果右键点击程序窗口无效,可以右键点击程序标题栏. 扩展知识: 连接字符串的安全性 一、尽量使用windows验证而不是sql server验证: 1、安全性易管理 2、不需要设置用户名和密码(这样传递的时候不会被截取吧) 3、密码不会通过明文在网络上传播 原因:如果用sql server验证在配置文件中的话,用户名和密码很容易被别人看到,但是如果你用windows验证的话,用户名和密码是存储在本机windows文件中的 这就很难被人发现。 二、sql server身份验证 1、强制实施密码策略 2、强制密码过期 3、用户在下次登录时必须更改密码 怎么设置:直接在sql server中进行设置 如果是sql server验证的话,Persist security info 一定设置为false,这样会保证敏感信息不被暴露(如ID、密码)。 三、防止sql注入攻击: 这个注入好像是打开Min Pool Size=999999一个很大的值,来破坏数据库。 这个链接保护的方法最好是: Date Source=(local);Initial Catalog=Works;User ID=sa;Password="password01!;Pooling=true" 看到后面没有,加一个双引号。 四、在配置文件存储链接字符串: <configuration> <connectionStrings configSource="connection.config"> configuration> 然后在connection.config里有这样的设置: <connectionStrings> connectionString="server......"> connectionStrings> 注意:connection.config属性需要设置,设置为复制到应用程序里面。不然web.config就找不到这个文件。 五、用RSA非对称加密。网上查。 六、asp.net iis注册工具(aspnet_regiis.exe) 使用加密:aspnet_regiis -pef "connectionStrings" F:\study\ComputerDM\Web 解密:aspnet_regiis -pdf "connectionStrings" F:\study\ComputerDM\Web

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧