2013-03-16 236 views
6

真的有連接字符串惱人的時間。VB.NET連接字符串(Web.Config,App.Config)

我在一個解決方案中有兩個項目在一起。作爲表示層的Web表單應用程序和支持它的類庫,它們將發送和接收來自數據庫的數據。

- Employee類的類庫項目中 -

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是Web表單項目的一部分,而不是類庫,這些項目是不能'對話'對方?我是否需要將Web /應用程序配置文件添加到類庫以在該項目中存儲連接字符串?

+0

從你的代碼,它看起來像你試圖使用'My_ConnectionString'檢索值從你的配置文件。如果這是正確的,那將不起作用 - 您需要以類似於@G的方式從配置文件中檢索它。斯托伊涅夫的答案在下面。 – Tim 2013-03-16 06:29:50

+0

這可能很有用http://www.connectionstrings.com/ – ajt 2013-03-16 06:40:54

回答

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 2013-03-16 06:31:59

+3

我也建議使用'Using'塊來確保連接正確處置。 – Tim 2013-03-16 06:32:51

+0

'ConfigurationManager'不是'Configuration'的成員 我覺得我在某個地方犯了一個錯誤... – Corgalas 2013-03-16 06:39:30

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 2016-03-29 15:50:01

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(); 
    } 
}