黑马程序员技术交流社区
标题:
【已解决】ado.net视频中的获取数据库文件地址那段代码位置
[打印本页]
作者:
戴伟
时间:
2012-6-9 13:00
标题:
【已解决】ado.net视频中的获取数据库文件地址那段代码位置
本帖最后由 戴伟 于 2012-6-10 12:55 编辑
在练习省份城市combox那段时发现一个问题,在内嵌数据库文件方式访问数据库时,获取数据库文件地址那段代码加入program.cs文件的时候,起先我是这么加的(#region那段):
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
#region 获取数据库文件地址
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);
}
#endregion
}
}
发现无法进行insert操作,下断点,又发现已插入一条记录,但是数据库里面又没有
后来把这段加到最前面就可以正常进行insert操作了:
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
#region 获取数据库文件地址
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);
}
#endregion
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
请问这个是什么问题,为什么一定要加在main函数的最前面
作者:
李玮
时间:
2012-6-9 17:50
后面的视频有讲,就是这阶段最后的那个视频
这段代码如果不加 会默认操作 “\bin\Debug\”下的那个文件,你加上这段代码,就操作你用的那个数据库文件了
还有你放在最后, 是关闭窗口再执行,那就没用了。
#region 获取数据库文件地址
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);
}
#endregion
作者:
戴伟
时间:
2012-6-10 12:45
谢谢解惑,我验证了一下你的说话,这段代码必须放在调用sql数据库之前
我把它放在Application.Run(new Form1())之前,和放在窗体的构造函数、Form1_Load里面,都是有效的。
只要是调用数据库之前就可以了,非常感谢!
作者:
黑马-许泽宇
时间:
2012-6-11 10:01
这里主要是连接字符串采用的相对路径的方法AttachDbFilename=|DataDirectory|\\data.mdf
所以默认操作数据库会为\bin\Debug\下的那个文件
而把连接字符串采用绝对路径的话AttachDbFilename=E:\练习\ConsoleApplication1\ConsoleApplication1\Database1.mdf
既可以不需要用到开头那段代码了,不过这样转移数据库的话,就需要修改连接字符串会造成操作上的不便。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2