黑马程序员技术交流社区

标题: 数据库连接问题。 [打印本页]

作者: 颜晋南    时间: 2012-10-20 01:11
标题: 数据库连接问题。
今天看视频,视频里面的的链接语句是这样的

  1. using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"))
复制代码
但是这样用,程序没效果,我改成绝对地址后:

  1. using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=e:\documents\visual studio 2010\Projects\exam2\test9\Database1.mdf;Integrated Security=True;User Instance=True"))
复制代码
后就正常了,有人知道什么问题吗?为什么=|DataDirectory| 不能用?
作者: 给生活加点料    时间: 2012-10-20 01:13
抢沙发喽。
作者: 康子龙    时间: 2012-10-20 03:33
数据库连接字符串不是应该写在配置文件的么?据说那样的话更合理。。。。。
作者: 颜晋南    时间: 2012-10-20 08:26
康子龙 发表于 2012-10-20 03:33
数据库连接字符串不是应该写在配置文件的么?据说那样的话更合理。。。。。 ...

没错,但是首先要能用。写在源代码方便调试,如果可以用的话,在按照视频里面说的,放在 配置文件。不然到时候出问题,都不知道哪里问题。
作者: 朱坤福    时间: 2012-10-21 10:55

AttachDbFilename改成database或integrated Security
在配置文件中添加下面代码
<connectionStrings>
    <add name="Connection" connectionString="Server=(local)\SqlExpress; Database=Database1; Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

作者: chens2865    时间: 2012-10-21 16:24
你必须在程序的Main函数中加入如下代码:(关于这段代码的详细说明,请参看杨中科老师的解释文章;加入这段代码后程序就可以正常运行了)
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);
            }
文章地址:http://www.rupeng.com/forum/thread-11988-1-1.html.(求给分啊!原理其实不难,只是我说不够清楚)

作者: 谷黎明    时间: 2012-10-21 17:35
"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"中“|DataDirectory”必须放配置文件中才能识别为相对路径。
你写的是硬编码在程序中,程序认为是一个字符,无法识别为相对路径。
作者: 黑马杨锦喜    时间: 2012-10-21 23:48
奇葩,怎么我的就行?可不可以将错图提示截图看看?

说说我 的看法:
DataDirectory 是表示数据库路径的替换字符串,由于无需对完整路径进行硬编码,DataDirectory 简化了项目的共享和应用程序的部署;
使用 DataDirectory 时,目录结构中的结果文件的路径不能高于替代字符串指向的目录,即结果文件必须是DataDirectory所指向的目录的子孙文件,否则产生异常。
那么很有可能就是你这里的DataDirectory指的并不是e:\documents\visual studio 2010\Projects\exam2\test9,而是e:\documents之类的,此时目录结构中的结果文件的路径就高于替代字符串指向的目录了,则报错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2