黑马程序员技术交流社区
标题:
ADO.net连接数据库问题
[打印本页]
作者:
吴春晟
时间:
2011-11-13 14:29
标题:
ADO.net连接数据库问题
视频中 测试数据库连接是如下代码:
static void Main(string[] args)
{
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}
// SqlConnection conn = new SqlConnection(@"Data Source=.\SQLSERVER_WCS;AttachDbFilename="+dataDir+@"\Database1.mdf;Integrated Security=True;User Instance=True");
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLSERVER_WCS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");
conn.Open();
Console.WriteLine("打开数据库成功");
Console.ReadKey();
}
复制代码
请问其中AttachDbFilename=|DataDirectory|\Database1.mdf 中|DataDirectory| 为什么要这么用,(虽然我知道这个表示的是database.mdf所在的文件目录)
作者:
王绚文
时间:
2011-11-13 14:45
连接字符串 .NET 链接数据库的字符串可以有很多种不同的写法
这只是其中的一种而已!
作者:
夏雪锐
时间:
2011-11-13 20:09
具体参照老杨的解释:原理简单分析:连接字符串中的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
作者:
朱陈伟
时间:
2011-11-16 00:16
链接字符串的写法有很多种,可以尝试下其他的写法哦。。。
作者:
高宜
时间:
2012-5-13 19:37
既然链接字符串有很多种,那么杨老师讲的这种连接字符串的好处体现在哪里了?
作者:
高宜
时间:
2012-5-13 19:47
本帖最后由 高宜 于 2012-5-13 19:49 编辑
通过监视看不到 DataDirectory这个变量,只能看到dataDir。那dataDir的值是通过什么原理传到DataDirectory中的了?
那么在帮助文件中“AppDomain..::.SetData 方法 :为应用程序域属性分配值。”表示的是什么意思了?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2