A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴春晟 黑马帝   /  2011-11-13 14:29  /  3528 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频中 测试数据库连接是如下代码:
  1.         static void Main(string[] args)
  2.         {
  3.             string dataDir = AppDomain.CurrentDomain.BaseDirectory;
  4.             if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
  5.             {
  6.                 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
  7.                 AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
  8.             }

  9.            // SqlConnection conn = new SqlConnection(@"Data Source=.\SQLSERVER_WCS;AttachDbFilename="+dataDir+@"\Database1.mdf;Integrated Security=True;User Instance=True");
  10.             SqlConnection conn = new SqlConnection(@"Data Source=.\SQLSERVER_WCS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");
  11.             conn.Open();
  12.             Console.WriteLine("打开数据库成功");
  13.             Console.ReadKey();
  14.         }
复制代码
请问其中AttachDbFilename=|DataDirectory|\Database1.mdf 中|DataDirectory|  为什么要这么用,(虽然我知道这个表示的是database.mdf所在的文件目录)


评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

5 个回复

倒序浏览
连接字符串 .NET 链接数据库的字符串可以有很多种不同的写法
这只是其中的一种而已!

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
具体参照老杨的解释:原理简单分析:连接字符串中的DataDirectory的值就是通过AppDomain.CurrentDomain.SetData赋值过去的,如果当前程序的目录以"\bin\Debug\"或者"\bin\Release\"则认为它是运行在VisualStudio环境中,就取项目的目录然后赋值给DataDirectory这个key。既然是CurrentDomain.SetData,估计对于非默认AppDomain中的数据库连接代码可能会不起作用(只是猜测,没验证),这就要需要创建子AppDomain的时候再去赋值了。

参照:http://www.rupeng.com/forum/thread-11988-1-1.html

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
链接字符串的写法有很多种,可以尝试下其他的写法哦。。。

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
既然链接字符串有很多种,那么杨老师讲的这种连接字符串的好处体现在哪里了?
回复 使用道具 举报
本帖最后由 高宜 于 2012-5-13 19:49 编辑

通过监视看不到 DataDirectory这个变量,只能看到dataDir。那dataDir的值是通过什么原理传到DataDirectory中的了?
那么在帮助文件中“AppDomain..::.SetData 方法 :为应用程序域属性分配值。”表示的是什么意思了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马