6

我收到错误,在本地窗口中我看到 conSettings 和 connectionString 值为 null。我可以说 ConfigurationManager 为空,我需要创建一个新对象。也许我正在使用 Access,也许我错过了 App.config 文件中的某些内容。有人可以帮我解决这个问题吗?提前致谢。

App.config 文件...

   <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
       <add key="MyDBConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0;Data 
                   Source=E:\...\Database1.mdb"/>
    </appSettings>
    </configuration>

Form.cs 文件...

 private void btnShow_Click(object sender, EventArgs e)
    {
        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["MyDBConnectionString"];

        string connectionString = ConfigurationManager.ConnectionStrings["MyDBConnectionString"].ConnectionString; // error points here

        try
        {
            con = new OleDbConnection(connectionString);
            con.Open();
            cmd = new OleDbCommand("SELECT * FROM Table1", con);
            objReader = cmd.ExecuteReader();
            while (objReader.Read())
            {
                txtID.Text = ds.Tables[0].Rows[rno][0].ToString();
                CBAgeGroup.Text = ds.Tables[0].Rows[rno][1].ToString();
                CBGender.Text = ds.Tables[0].Rows[rno][2].ToString();
                CBCrimOffen.Text = ds.Tables[0].Rows[rno][3].ToString();
                if (ds.Tables[0].Rows[rno][4] != System.DBNull.Value)
                {
                    photo_aray = (byte[])ds.Tables[0].Rows[rno][4];
                    MemoryStream ms = new MemoryStream(photo_aray);
                   pictureBox1.Image = Image.FromStream(ms);
                }
                txtCV.Text = ds.Tables[0].Rows[rno][5].ToString();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            con.Close();
        }
    }

有人建议我使用 App.config。

VS 2010 C# MS 访问 2003

更新 1 我的 App.config 现在看起来像这样......

<configuration>
    <ConnectionString>
        <add key="MyDBConnectionString"   value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Raj\Education\C_Sharp\Test1\Database1.mdb"/>
    </ConnectionString>

我现在收到错误消息...“配置系统初始化失败”。我现在在谷歌上看它。

更新 2 尝试...

<configuration>
 <connectionStrings>
<add name="MyDBConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data   
        Source=E:\...\Database1.mdb"/>
  </connectionStrings>
 </configuration>

收到“对象引用未设置为对象实例”的错误再次谷歌搜索

更新 3

<configuration>
<connectionStrings>
    <clear />
    <add name="MyDBConnectionString"
     providerName="System.Data.OleDb" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Source=\Database1.mdb" />
</connectionStrings>

随着更新 3 我收到错误相同的错误。我已经包括了添加参考系统。配置,我已经使用 System.Configuration 进行了引用;

结论

也许VS 2010和Access 2003之间可能存在技术故障。这次我不会使用App.config。我知道 SQL Server 不会有问题。所以我会留下它。感谢 Damith 和 Clint 抽出宝贵时间。

4

5 回答 5

10

您需要阅读 AppSettings 键,如下所示,

string connectionString = 
      ConfigurationSettings.AppSettings["MyDBConnectionString"];

您仍然收到空值,请尝试以下步骤

  1. 在解决方案资源管理器中选择 App.Config 文件
  2. 在属性窗口中选择复制到输出目录以始终复制。
  3. 现在构建应用程序并重试。

要像下面这样访问,您需要在应用程序配置中添加 connectionStrings 部分

  string connectionString = 
      ConfigurationManager.ConnectionStrings["MyDBConnectionString"].ConnectionString; // error points here

示例应用配置

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="MyDBConnectionString" 
    connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data 
               Source=E:\...\Database1.mdb"/>
  </connectionStrings>
</configuration>
于 2013-04-21T13:06:59.400 回答
9

检查您是否已将 app.config 文件放在启动项目下。就我而言,我只需要将 app.config 文件放在我的启动项目下,问题就解决了。

于 2013-05-26T16:43:53.833 回答
3

这发生在我的类库中,控制台应用程序设置为运行以进行调试。

有必要在控制台应用程序中添加到 app.config 的连接,因为如果您从外部进程启动它,它将不会在您的库中找到它。

于 2017-03-22T20:18:35.167 回答
1

这个:

string connectionString = ConfigurationManager.ConnectionStrings["MyDBConnectionString"].ConnectionString;

是你的问题。

您正在访问ConfigurationManager.ConnectionStrings以访问您的配置项,但是在App.Config您将其放在下面appSettings的文件中,配置文件的部分不同于ConnectionStrings

您可以将连接字符串放在ConnectionStringsapp.config 的相关部分(可使用 访问ConfigurationManager.ConnectionStrings,或根据该部分访问它appSettings

看:

http://msdn.microsoft.com/en-us/library/ms254494(v=vs.80).aspx

有关存储连接字符串的 MSDN 指南。

于 2013-04-21T13:09:12.660 回答
0

即使在多次检查 app.config 文件和我的代码是否有错误之后,我也面临同样的问题,但我没有在我的代码中发现任何错误。最终我发现了一个愚蠢的错误,我的编译器默认将应用程序配置文件名设为“app1.config”,当我将其更改为“app.config”时,一切对我来说都很好。

希望它会有所帮助。

于 2016-05-02T06:06:39.633 回答