A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄珍 中级黑马   /  2012-4-1 13:09  /  3346 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

创建了一个名为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();

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

13 个回复

倒序浏览
把User Instance=Ture删了试试,你的数据库版本不需要用户实例

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
语句写的没错,直接在vs中附加的数据库容易出错,建议还是在sql server中把数据库附加好在到vs中连接
你可以用try-catch来捕捉一下

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
杨曾荣 发表于 2012-4-1 13:27
把User Instance=Ture删了试试,你的数据库版本不需要用户实例

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

把User Instance=True删除后在(@"Data Source=.\后加上SQLEXPRESS1,好像创建成功了,打开又存在问题:“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错)”求高手指点。
回复 使用道具 举报
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();
改过之后还有错的话,就检查一下你的代理服务器是否启动。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
邓坤 发表于 2012-4-1 16:43
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\D ...

问题解决了是路径问题,代码一点问题没有,代码路径与数据库路径不一致,改成一致便好了!!!
回复 使用道具 举报
邓坤 发表于 2012-4-1 16:43
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\D ...

问题解决了是路径问题,代码一点问题没有,代码路径与数据库路径不一致,改成一致便好了!!!
回复 使用道具 举报
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=False");     试试这个!!!!!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
“User Instance”属性是用来判断在 DbConnection.Open() 方法执行时是否使用当前用户来启动SQL Express的一个实例。
我看你的User Instance属值为true,然后报User istance 的值无效。所以,我感觉会是你当前用户存在问题。
1.你可以看当前用户是否能登录到SQL中。
2.你可以更改为sa账号或其它账号连接
3.“User Instance”属性只在“Express”版本有效。
希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
这个问题我已经解决了是路径不统一的问题题,只要把要连接的数据库的属性打开,把“连接字符串”后面的地址粘到sqlconnection conn = new sqlconnection("");双引号中就可以了,还有一个问题就是:如果程序多处用到连接,岂不是每个都要手动修改,有没有有方法可以需要修改一处?好像可以把这个放到配置文件,具体怎么用呢?
回复 使用道具 举报
黄珍 发表于 2012-4-4 10:08
这个问题我已经解决了是路径不统一的问题题,只要把要连接的数据库的属性打开,把“连接字符串”后面的地址 ...

去论坛下载 【传智播客.Net培训—ADO.Net】13读取配置中的连接字符串 这个视频能解决你的问题
回复 使用道具 举报
为什么要写的那么复杂啊 我一般连接数据库 这样写SqlConnection conn = new SqlConnection(server=.; database=数据库名; uid=用户名; pwd=密码)就可以连接了本地数据库 很简单  连接外面把.改成ip地址,端口号 就可以了。  另外程序多次用到,就把这个连接写成一个独立的类或静态类,每次用到调用就可以了,比如静态调用:
DBConnection.conn.open();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
黄珍 发表于 2012-4-4 10:08
这个问题我已经解决了是路径不统一的问题题,只要把要连接的数据库的属性打开,把“连接字符串”后面的地址 ...

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

这个老师有视频的……  你看视频教材,老师讲得较清楚的……  是在手机号码归属地那节中讲到的……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马