1

使用最近安装的 Visual Studio 2012,但现在我无法连接到我们的 SQL Server 数据库。

这些是我正在遵循的步骤

  1. 创造App1.config
  2. 输入App1.config

     <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
       <connectionStrings>
         <add name ="xxx" connectionString="USER ID=xx;PASSWORD=xx;PERSIST SECURITY INFO=True;Data Source=xx;Initial Catalog=xx" />
       </connectionStrings>
     </configuration>
    
  3. 添加对项目的引用System.Configuration

  4. 通过以下方式创建对命名空间的访问:

     using System.Data.SqlClient;
     using System.Data;
     using System.Configuration;
    
  5. 执行以下操作:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    
    namespace ConsoleApplication10 {
        class Program {
            static void Main(string[] args) {
    
                SqlConnection conn = null;
                conn = new SqlConnection(ConfigurationManager.ConnectionStrings["xxx"].ConnectionString);
    
            }
        }
    }
    
  6. 我创建了一个新的控制台应用程序并添加了上述内容,但仍然出现错误NullReferenceException was unhandled Object reference not set to an instance of an object....

在此处输入图像描述

编辑

通过即时窗口,我确定以下内容为空:

ConfigurationManager.ConnectionStrings["xxx"].ConnectionString

如果我将连接字符串硬编码到构造函数中,SqlConnection那么它可以连接

我错过了什么 - 一些非常明显的东西!还是这与我的新 VS 有关?

4

5 回答 5

3

检查您的输出文件夹。

假设你的应用程序被调用myapp.exe,应该有myapp.exe.config.

这应该存在,并且应该包含app.configVisual Studio 中文件的内容。

如果没有,请检查您是否在其他地方已有app.config文件(我注意到您调用了您的文件app1.config

于 2013-01-23T13:04:20.093 回答
3

通过至少执行以下操作来检查 ConfigurationManager.ConnectionStrings 中的内容:

if (ConfigurationManager.ConnectionStrings != null ) {
    Console.WriteLine(ConfigurationManager.ConnectionStrings.Count);
    Console.WriteLine(ConfigurationManager.ConnectionStrings[0].ConnectionString);
    Console.WriteLine(ConfigurationManager.ConnectionStrings[0].Name);
    ....
} else {
    Console.WriteLine("null");
}

这将突出任何明显的问题,例如App.config文件重复,正如您App1.configOP.

于 2013-01-23T13:26:15.893 回答
2

您是否尝试过检查 ConfigurationManager.ConnectionStrings["xxx"].ConnectionString 的值并使用该值进行硬编码?你还是空吗?

还建议像这样创建连接:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["xxx"].ConnectionString))
{
        //code        
}

我会回复,但我还没有足够的代表...... :-(

于 2013-01-23T13:00:13.930 回答
2

根据您的代码尚未“做任何事情”这一事实猜测conn,我很确定您传入的连接字符串名称的ConfigurationManager返回值。传入时的构造函数null会引发异常而不是有效连接细绳。SqlConnectionnull

于 2013-01-23T13:10:33.897 回答
0

当您将连接字符串作为连接字符串放置在 Properties->Settings 中时,使用完整的命名空间访问它们,然后您就完成了。

在这里查看我的答案

于 2015-08-16T16:15:44.003 回答