2013-03-16 2 views
6

Действительно имеет раздражающее время со строками подключения.Строка соединения VB.NET (Web.Config, App.Config)

У меня есть два проекта вместе в одном решении. Приложение веб-форм, выступающее в качестве слоя презентации, и библиотека классов, поддерживающая его, которая будет отправлять и получать данные из базы данных.

- Сотрудник класса в рамках проекта Class Library -

Friend Class Employee 

Public Function GetEmployees() As DataSet 

    Dim DBConnection As New SqlConnection(My_ConnectionString) 
    Dim MyAdapter As New SqlDataAdapter("exec getEmployees", DBConnection) 

    Dim EmployeeInfo As DataSet 
    MyAdapter.Fill(EmployeeInfo, "EmployeeInfo") 

    Return EmployeeInfo 

End Function 

End Class 

В настоящее время приложение говорит мне, что не может получить доступ к «My_ConnectionString», который я пытался сохранить в файле конфигурации для быстрого повторного доступа :

<configuration> 

<system.web> 
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
</system.web> 

<connectionStrings> 
    <add name="My_ConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=My_DB;Integrated Security=True;"/> 
</connectionStrings> 

</configuration> 

web.config, является частью формы проекта веб, а не библиотека классов, эти проекты не могут «общаться» друг с другом? Нужно ли добавлять файл конфигурации веб-приложения в библиотеку классов для хранения строки подключения в этом проекте?

+0

Из кода он выглядит, как вы пытаетесь использовать 'My_ConnectionString' для извлечения значения из вашего файла конфигурации. Если это правильно, это не сработает - вам нужно извлечь его из файла конфигурации так же, как и для @G. Ответ Стойнева ниже. – Tim

+0

это может быть полезно http://www.connectionstrings.com/ – ajt

ответ

14

Не ясно, где My_ConnectionString прибывает из в вашем примере, но попробовать этот

System.Configuration.ConfigurationManager.ConnectionStrings("My_ConnectionString").ConnectionString

как этот

Dim DBConnection As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("My_ConnectionString").ConnectionString) 
+2

Вы также можете добавить ссылку на 'System.Configuration', импортировать ее с помощью' Imports System.Configuration', а затем получить к ней доступ с более коротким 'ConfigurationManager.ConnectionStrings ("My_ConnectionString"). ConnectionString'. – Tim

+3

Я также предложил бы использовать блок 'Using', чтобы обеспечить правильное удаление соединения. – Tim

+0

«ConfigurationManager» не входит в «Конфигурация» Я чувствую, что я где-то ошибся ... – Corgalas

4

Если это база данных .mdf и строка подключения была сохранена, когда его был создан, вы должны иметь к нему доступ через:

Dim cn As SqlConnection = New SqlConnection(My.Settings.DatabaseNameConnectionString) 

Надеюсь, что кто-то поможет.

0
Public Function connectDB() As OleDbConnection 

     Dim Con As New OleDbConnection 
     'Con.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=" & DBNAME & ";Data Source=" & DBSERVER & ";Pwd=" & DBPWD & "" 
     Con.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBNAME;Data Source=DBSERVER-TOSH;User ID=Sa;Pwd= & DBPWD" 
     Try 
      Con.Open() 
     Catch ex As Exception 
      showMessage(ex) 
     End Try 
     Return Con 
    End Function 
+0

Не могли бы вы добавить некоторые пояснения к вашему коду? Благодаря! – cramopy

0

соединения в AppConfig

<connectionStrings> 
    <add name="ConnectionString" connectionString="Data Source=192.168.1.25;Initial Catalog=Login;Persist Security Info=True;User ID=sa;Password=example.com" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

В Class.Cs

public string ConnectionString 
{ 
    get 
    { 
     return System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
    } 
} 
Смежные вопросы