VB.NET连接字符串(Web.Config,App.Config)

8

我在连接字符串方面遇到了很烦人的问题。

我有两个项目在一个解决方案中。一个Web表单应用程序作为表示层,另一个类库支持它将从数据库发送和接收数据。

-- 类库项目内的员工类 --

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 / app配置文件来存储连接字符串吗?


从你的代码看,你似乎想使用 My_ConnectionString 来从配置文件中检索值。如果是这样,那么这种方法是行不通的 - 你需要以类似于 @G. Stoynev 下面的回答中的方式从配置文件中检索它。 - Tim
这可能会有用 http://www.connectionstrings.com/ - ajt
5个回答

23

在您的示例中,不清楚My_ConnectionString是从哪里来的,但可以尝试这样做:

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

像这样

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

3
你还可以参考 System.Configuration 并通过 Imports System.Configuration 导入它,然后使用较短的 ConfigurationManager.ConnectionStrings("My_ConnectionString").ConnectionString 访问它。 - Tim
4
我建议使用 Using 块来确保连接被正确处理。 - Tim
2
“ConfigurationManager” 不是 “Configuration” 的成员。我感觉自己在某个地方犯了错误… - Corgalas
3
你是否在项目中添加了 System.Configuration 引用(DLL),并添加了 Imports System.Configuration 语句? - Tim
忘记将引用添加到项目中了。谢谢Tim! - Corgalas
显示剩余2条评论

5
如果这是一个.mdf数据库,并且连接字符串在创建时已保存,您可以通过以下方式访问它:
    Dim cn As SqlConnection = New SqlConnection(My.Settings.DatabaseNameConnectionString)

希望能帮助到某些人。


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

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

你能否给你的代码加上一些解释?谢谢! - cramopy
这个连接字符串有硬编码条目,它没有从.config文件中获取。如果您需要指向不同的服务器怎么办?使用这段代码,应用程序需要部署更改。而使用.config文件,可以在后台进行更改。 - Phil3992

0

我不知道这是否仍然是一个问题,但我更喜欢在我的代码中使用My.Settings。

Visual Studio会生成一个简单的类,其中包含从app.config文件中读取设置的函数。

您可以通过My.Settings.ConnectionString轻松访问它。

    Using Context As New Data.Context.DataClasses()
        Context.Connection.ConnectionString = My.Settings.ConnectionString
    End Using

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接