黑马程序员技术交流社区

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

作者: 黄珍    时间: 2012-4-1 13:09
标题: 数据库连接问题
创建了一个名为Database1的数据库,然后连接出现问题:User istance 的值无效。
SqlConnection conn = new SqlConnection(@"Data Source=.\;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=Ture");
            conn.Open();
            Console.WriteLine("success open");
            Console.ReadKey();
作者: 杨曾荣    时间: 2012-4-1 13:27
把User Instance=Ture删了试试,你的数据库版本不需要用户实例
作者: 韩艳君    时间: 2012-4-1 13:37
语句写的没错,直接在vs中附加的数据库容易出错,建议还是在sql server中把数据库附加好在到vs中连接
你可以用try-catch来捕捉一下
作者: 黄珍    时间: 2012-4-1 14:50
杨曾荣 发表于 2012-4-1 13:27
把User Instance=Ture删了试试,你的数据库版本不需要用户实例

删了又出现新的问题:
在数据库 'master' 中拒绝了 CREATE DATABASE 权限。
尝试为文件 E:\程序\AJAX\ADO.net\Database1.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
作者: 黄珍    时间: 2012-4-1 15:48
本帖最后由 黄珍 于 2012-4-1 15:50 编辑

把User Instance=True删除后在(@"Data Source=.\后加上SQLEXPRESS1,好像创建成功了,打开又存在问题:“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错)”求高手指点。
作者: 邓坤    时间: 2012-4-1 16:43
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=Ture;");
            conn.Open();
            Console.WriteLine("success open");
            Console.ReadKey();
改过之后还有错的话,就检查一下你的代理服务器是否启动。
作者: 黄珍    时间: 2012-4-2 19:56
邓坤 发表于 2012-4-1 16:43
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\D ...

问题解决了是路径问题,代码一点问题没有,代码路径与数据库路径不一致,改成一致便好了!!!
作者: 黄珍    时间: 2012-4-2 19:56
邓坤 发表于 2012-4-1 16:43
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\D ...

问题解决了是路径问题,代码一点问题没有,代码路径与数据库路径不一致,改成一致便好了!!!
作者: ★心秒★    时间: 2012-4-2 20:17
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=False");     试试这个!!!!!
作者: 郑帅    时间: 2012-4-3 11:24
“User Instance”属性是用来判断在 DbConnection.Open() 方法执行时是否使用当前用户来启动SQL Express的一个实例。
我看你的User Instance属值为true,然后报User istance 的值无效。所以,我感觉会是你当前用户存在问题。
1.你可以看当前用户是否能登录到SQL中。
2.你可以更改为sa账号或其它账号连接
3.“User Instance”属性只在“Express”版本有效。
希望能帮到你
作者: 黄珍    时间: 2012-4-4 10:08
这个问题我已经解决了是路径不统一的问题题,只要把要连接的数据库的属性打开,把“连接字符串”后面的地址粘到sqlconnection conn = new sqlconnection("");双引号中就可以了,还有一个问题就是:如果程序多处用到连接,岂不是每个都要手动修改,有没有有方法可以需要修改一处?好像可以把这个放到配置文件,具体怎么用呢?
作者: 杨礼文    时间: 2012-4-4 19:36
黄珍 发表于 2012-4-4 10:08
这个问题我已经解决了是路径不统一的问题题,只要把要连接的数据库的属性打开,把“连接字符串”后面的地址 ...

去论坛下载 【传智播客.Net培训—ADO.Net】13读取配置中的连接字符串 这个视频能解决你的问题
作者: 姜志钦    时间: 2012-4-5 10:09
为什么要写的那么复杂啊 我一般连接数据库 这样写SqlConnection conn = new SqlConnection(server=.; database=数据库名; uid=用户名; pwd=密码)就可以连接了本地数据库 很简单  连接外面把.改成ip地址,端口号 就可以了。  另外程序多次用到,就把这个连接写成一个独立的类或静态类,每次用到调用就可以了,比如静态调用:
DBConnection.conn.open();
作者: ★心秒★    时间: 2012-4-6 09:31
黄珍 发表于 2012-4-4 10:08
这个问题我已经解决了是路径不统一的问题题,只要把要连接的数据库的属性打开,把“连接字符串”后面的地址 ...

好像可以把这个放到配置文件,具体怎么用呢?   

这个老师有视频的……  你看视频教材,老师讲得较清楚的……  是在手机号码归属地那节中讲到的……




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