黑马程序员技术交流社区
标题:
winform操作数据库问题
[打印本页]
作者:
许前刚
时间:
2011-11-18 20:14
标题:
winform操作数据库问题
本帖最后由 许前刚 于 2011-11-23 10:55 编辑
看winform视频时,不了解杨老师让我们加上的这几行代码的意思:
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Release\") || dataDir.EndsWith(@"\bin\Debug\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}
我发现如果没有这几行代码,对数据库的操作就不会成功,自己感觉这几行代码的意思是把数据库连接字符串中的DataDirectory给替换了,希望知道的哥们给予通俗易懂的详解!谢谢。
作者:
郑文
时间:
2011-11-18 20:20
我曾经写过关于这个的解释 先发过来给你看看
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);
}
下面解释一下这段代码
1.AppDomain.CurrentDomain.BaseDirectory 读取当前程序的的路径,返回值为字符串 赋值给dataDir然后 Consoel.WriteLine(dataDir )结果为:
E:\program\ADO.NET MDF文件\ADO.NET MDF文件\bin\Debug\
2.判断是否dataDir 是程序的路径 也就是以bin\Debug\ 或\bin\Release\ 结尾(MDF文件存储在Debug 或Release中 )
3.通过调用System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName方法 得到dataDir中的父路径(调用两次Parent属性)
注:Directory 属性开用于创建、移动和枚举通过目录和子目录的静态方法。无法继承此类。
GetParent() 方法检索指定路径的父目录,包括绝对路径和相对路径。
FullName 属性获取程序集的显示名称。
4.调用 AppDomain.CurrentDomain.SetData();重新讲dataDir的值赋值给DataDirectory;因为程序是通过DataDirectory
的值来连接MDF文件的 这段代码修改了 MDF文件的路径所 所以程i序可以直接连到跟目录的文件内,而不是Debug目录下的MDF.此代码用于控制台和WINFORM。ASP.NET不用写这段代码 ASP中直接将MDF文件放到App_Data文件夹即可.
写完这篇文章,发现很有成就感,不过代码的原创不是我 ,只是负责解释,代码作者:杨中科老师。
作者:
付炯
时间:
2011-11-18 22:00
http://www.rupeng.com/forum/thread-11988-1-1.html 可以看一下杨老师的这篇文章
另外 如果不加那段代码 直接从属性窗口中获取到数据库的连接字符串 建立数据库连接也是完全可以的
作者:
郑文
时间:
2011-11-19 13:48
是可以的 但是做insert插入的时候 数据不同步
作者:
杨楠
时间:
2011-11-20 12:52
winform程序中你写代码操作的数据库和实际的数据库不是一个文件。加这段代码就是告知程序,我要操作的是哪一个数据库。偶记得好像是这样吧- -
作者:
乔克
时间:
2011-11-20 17:26
本帖最后由 乔克 于 2011-11-20 17:27 编辑
学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2