黑马程序员技术交流社区

标题: ado.net连接数据库失败 [打印本页]

作者: 蔡嘉    时间: 2013-2-16 11:09
标题: ado.net连接数据库失败
本帖最后由 蔡嘉 于 2013-2-19 08:40 编辑

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 第一个mdf
{
    class Program
    {
        static void Main(string[] args)
        {
            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);
            }
            SqlConnection conn = new SqlConnection(@"Data Source=.\;AttachDBFilename=|DataDirectory|\Database1.mdf;
            Integrated Security=True;");
            conn.Open();
            Console.WriteLine("打开数据库连接成功!!!");
            Console.ReadKey();
        }
    }
}

百度以后依然无法解决,为了不浪费时间,只好求助大家了。
作者: 王立    时间: 2013-2-16 11:20


SqlConnection conn = new SqlConnection(@"server=.;database=数据库名;uid=登录用户名;pwd=登录密码");  用这个
作者: 蔡嘉    时间: 2013-2-16 13:22
本帖最后由 蔡嘉 于 2013-2-16 13:28 编辑
王立 发表于 2013-2-16 11:20
SqlConnection conn = new SqlConnection(@"server=.;database=数据库名;uid=登录用户名;pwd=登录密码"); ...


using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 第一个mdf
{
    class Program
    {
        static void Main(string[] args)
        {
            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);
            }
            SqlConnection conn = new SqlConnection(@"server=.;database=Database1.mdf;uid=sa;pwd=******");
            conn.Open();
            Console.WriteLine("打开数据库连接成功!!!");
            Console.ReadKey();
        }
    }
}

可是为什么在Management Studio里用sa方式登录成功,在vs2012里却依然报错呢???
我装的是sqlserver2008,显示错误:无法打开登录所请求的数据库Database1.mdf。而且在visual studio 2012 的project文件夹里找不到Database1.mdf,这是为什么呢?明明在vs2012里创建了和保存了Database1.mdf,但是文件夹里没有。
作者: 王立    时间: 2013-2-16 17:57
  手动连接测试下用vs看看能连接成功吗

作者: 戴鑫凯    时间: 2013-2-16 18:35
蔡嘉 发表于 2013-2-16 13:22
using System;
using System.Collections.Generic;
using System.Data.SqlClient;

SqlConnection conn = new SqlConnection(@"server=.;database=Database1.mdf;uid=sa;pwd=******");

楼主你这里的 database=Database1.mdf 不对吧,database是数据库,你后面跟个mdf是什么东西?


SqlConnection conn = new SqlConnection(@"Data Source=.\;Initial Catalog=Database1;User ID=sa;password=*****");   


作者: 戴鑫凯    时间: 2013-2-16 18:37
pokemon 发表于 2013-2-16 18:35
SqlConnection conn = new SqlConnection(@"server=.;database=Database1.mdf;uid=sa;pwd=******");

楼 ...

Database1.mdf 是一个mssql数据库文件,咱们连接的是sql这个服务,并不是这个文件!我们通过服务对这个文件进行操作.
作者: 蔡嘉    时间: 2013-2-17 10:15
王立 发表于 2013-2-16 17:57
手动连接测试下用vs看看能连接成功吗

测试连接是成功的!

QQ截图20130217101317.png (55.65 KB, 下载次数: 19)

QQ截图20130217101317.png

作者: 蔡嘉    时间: 2013-2-19 08:48
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 第一个mdf
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SqlConnection conn = new SqlConnection(@"Data Source=.; Initial Catalog=master;User Id=sa;Password=******;"))
            {
                conn.Open();
                Console.WriteLine("打开数据库连接成功!!!");
                Console.ReadKey();
            }
        }
    }
}

QQ截图20130219084554.png (19.48 KB, 下载次数: 20)

QQ截图20130219084554.png





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