VB .NET-App.config-连接字符串

问题描述

在VB .NET 2019中,我有一些代码可以连接到Oracle数据库:

Private Const connectionString = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;Data Source=someSource;User ID=someUser;Password=somePassword"

Public Function Connect() As Object
    Connect = CreateObject("ADODB.Connection")
    Connect.ConnectionString = connectionString 
    Connect.CursorLocation = 3
    Connect.Open
    ...
End Function

此代码可以正常工作。现在,我正在尝试将connectionString定义移动到app.config文件。

app.config:

<connectionStrings>
    <add name="TestConnection" connectionString="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;Data Source=someSource;User ID=someUser;Password=somePassword" />
</connectionStrings>

在我的代码中,我只是对此进行了更改:

Connect.ConnectionString = connectionString 

通过:

Connect.ConnectionString = ConfigurationManager.ConnectionStrings("TestConnection").ConnectionString

运行代码时,出现以下错误: System.NullReferenceException:'对象引用未设置为对象的实例。 System.Configuration.ConnectionStringSettingsCollection.this [string] .get返回为空。

我不知道自己在做什么错

解决方法

我不确定您做错了什么,但我只是测试了您描述的情况,对我来说效果很好。在这种情况下,您应该始终创建一个测试项目,以隔离遇到困难的特定功能以对其进行特定测试。这是我所做的:

  1. 创建一个新的WinForms项目。
  2. 创建一个新的类库项目。
  3. 在两个项目中都引用System.Configuration.dll。
  4. 在WinForms项目中引用类库项目。
  5. 将适当的连接字符串添加到WinForms项目中的App.config文件中。
  6. 在“类库”项目中添加一个读取该连接字符串的类。
  7. 在WinForms项目中创建库类的实例,并获取其读取的连接字符串。

这是我的App.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
      <add name="TestConnection" connectionString="Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=True"/>
    </connectionStrings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
    </startup>
</configuration>

这是我的图书馆课:

Imports System.Configuration

Public Class Class1

    Public Property ConnectionString As String

    Public Sub New()
        ConnectionString = ConfigurationManager.ConnectionStrings("TestConnection").ConnectionString
    End Sub

End Class

这是我的表单类:

Imports System.Configuration
Imports ClassLibrary1

Public Class Form1

    Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
        Dim testConnectionString = ConfigurationManager.ConnectionStrings("TestConnection").ConnectionString

        Debug.WriteLine(testConnectionString)
    End Sub

    Private Sub Button2_Click(sender As Object,e As EventArgs) Handles Button2.Click
        Dim obj As New Class1

        Debug.WriteLine(obj.ConnectionString)
    End Sub
End Class

运行该WinForms项目并单击Buttons时,两次都在“输出”窗口中看到正确的连接字符串。如果您可以执行相同的操作并获得相同的结果,那么您知道应该起作用的方法确实起作用。然后,您需要查找此测试方案与现有项目之间的差异。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...