nullreferenceException было необработано при извлечении строки подключения из app.config VB.NET

Я изо всех сил пытался подключиться с помощью app.config вместо жесткого кодирования со вчерашнего вечера, и я либо не могу найти больше информации в сети, которая помогла бы, либо я слишком новичок, чтобы понять все это.

Исключение возникает в строке, назначающей строку подключения для «возвращаемого значения».

Imports System.Configuration

Imports System.Data.SqlClient

Public Class Form1

Public Shared Function GetConnectionStringByName( _
ByVal con As String) As String
    Dim returnvalue As String

    returnvalue = ConfigurationManager.ConnectionStrings(con).ConnectionString
    MessageBox.Show(returnValue)

    Return returnValue

End Function

Вот app.config также

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>

<connectionStrings>
  <clear />
  <add name="con"  
  connectionString="Data Source=DBT07P;InitialCatalog=WeeklyDev_08012011;User Id=user;Password=Pass;"       
       providerName="System.Data.ProviderName"/>
</connectionStrings>

</configuration>

person Reggie    schedule 03.08.2011    source источник


Ответы (2)


Проблема заключается в том, что для переменной метода con не задано значение, соответствующее значению в коллекции ConnectionStringSettingsCollection.

Если код, который вызывает GetConnectionStringByName, устанавливает con в строку "con", все должно быть в порядке, так как "con" является членом вашей коллекции ConnectionStringSettingsCollection.

person Jay Riggs    schedule 03.08.2011
comment
Спасибо за ответ. Я все еще новичок в этом. Я не смог понять, что вы имели в виду, установив con в строку con, но мне, наконец, удалось решить эту проблему, назначив ее напрямую как sqlconnection. Думаю, я переоценил сложность всего этого. - person Reggie; 04.08.2011
comment
@ Реджи, я рад, что ты нашел решение. Я имел в виду, что для параметра функции con необходимо установить значение con, например: Call GetConnectionStringByName("con") - person Jay Riggs; 04.08.2011

Вместо создания функции для получения строки подключения, как в примере с моим первоначальным вопросом, я немного изменил ситуацию.

Мой XML теперь выглядит так:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="connect" value="Data Source=DBT07P;Initial Catalog=WeeklyDev_08012011;User  Id=user;Password=Pass;"/>
</appSettings>
</configuration>

и я использую «System.Configuration.ConfigurationManager.AppSettings («connect»)» вместо того, где в моем коде были мои жестко закодированные строки подключения.

Итак, это:

Dim returnvalue as new sqlconnection(Data Source=DBT07P;Initial Catalog=WeeklyDev_08012011;User  Id=user;Password=Pass;)

Теперь выглядит так:

Dim returnvalue As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connect"))
person reggie    schedule 03.08.2011