1

我有一个简单的 WinForm,我用它来帮助我处理 ADO.NET。它有一个数据网格视图

我在名为的项目中添加了一个紧凑的 sql server 数据库experiment.sdf

在 App.config 文件中,我添加了以下内容。我使用以前的项目应用程序文件作为基础,所以这里可能有错误?:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
  <add name="DatabaseDGVexperiments.Properties.Settings.DatabaseDGVexperimentsConnStg"
      connectionString="Data Source=|DataDirectory|\experiment.sdf"
      providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
</configuration>

我添加了对配置库的引用。

表单后面是以下代码:

  SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DatabaseDGVexperimentsConnStg"].ConnectionString);

当它到达这条线时,SqlConnection conn = ...我得到一个错误NullReferenceException was unhandled。我该如何解决?

4

3 回答 3

7

改变这个:

name="DatabaseDGVexperiments.Properties.Settings.DatabaseDGVexperimentsConnStg"

到:

name="DatabaseDGVexperimentsConnStg"

或改变这个:

ConfigurationManager.ConnectionStrings["DatabaseDGVexperimentsConnStg"]

到:

ConfigurationManager.ConnectionStrings["DatabaseDGVexperiments.Properties.Settings.DatabaseDGVexperimentsConnStg"]
于 2012-06-09T13:18:40.170 回答
1
ConfigurationManager.ConnectionStrings["DatabaseDGVexperiments.Properties.Settings.DatabaseDGVexperimentsConnStg"].ConnectionString

请注意,您需要将名称命名为

DatabaseDGVexperiments.Properties.Settings.DatabaseDGVexperimentsConnStg

不像

DatabaseDGVexperimentsConnStg

编辑:

您需要使用SqlCeConnectionSqlCeDataAdapter使用 SqlServerCe 数据库,添加引用System.Data.SqlServerCe,然后代码应如下所示。

using (var conn = new SqlCeConnection(ConfigurationManager.ConnectionStrings["DatabaseDGVexperiments.Properties.Settings.DatabaseDGVexperimentsConnStg"].ConnectionString))
{
    conn.Open();
    using (var myAdapt = new SqlCeDataAdapter("SELECT * FROM experiment.dbo.helloworld", conn))
    {
        DataSet mySet = new DataSet();
        myAdapt.Fill(mySet, "AvailableValues");
        DataTable myTable = mySet.Tables["AvailableValues"];
        this.uxExperimentDGV.DataSource = myTable;
    }
}
于 2012-06-09T13:19:10.077 回答
0

您在代码中使用了与 web.config 不同的键值。字符串需要完全匹配。

于 2012-06-09T13:19:18.627 回答