【问题标题】:VB.NET Connection string (Web.Config, App.Config)VB.NET 连接字符串(Web.Config、App.Config)
【发布时间】:2013-03-04 23:31:40
【问题描述】:

连接字符串真的很烦人。

我在一个解决方案中同时拥有两个项目。一个充当表示层的 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/app 配置文件来在该项目中存储一个连接字符串?

【问题讨论】:

  • 从您的代码看来,您正在尝试使用 My_ConnectionString 从配置文件中检索值。如果这是正确的,那将不起作用 - 您需要以类似于 @G 的方式从配置文件中检索它。斯托伊涅夫的回答如下。
  • 这可能有用connectionstrings.com

标签: vb.net connection-string


【解决方案1】:

不清楚您的示例中My_ConnectionString 的来源,但试试这个

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

喜欢这个

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

【讨论】:

  • 您还可以添加对System.Configuration 的引用,使用Imports System.Configuration 导入它,然后使用较短的ConfigurationManager.ConnectionStrings("My_ConnectionString").ConnectionString 访问它。
  • 我还建议使用Using 块来确保正确处理连接。
  • 'ConfigurationManager' 不是'Configuration' 的成员我觉得我在某处犯了错误......
  • @Corgalas - 您是否在项目(DLL)中添加了对 System.Configuration 的引用并添加了 Imports System.Configuration 语句?
  • 忘记添加对项目的引用。谢谢蒂姆!
【解决方案2】:

如果是 .mdf 数据库并且在创建时保存了连接字符串,您应该可以通过以下方式访问它:

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

希望对某人有所帮助。

【讨论】:

    【解决方案3】:
    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
    

    【讨论】:

    • 您能在您的代码中添加一些解释吗?谢谢!
    • 此连接字符串有硬编码条目,它不是从 .config 中获取的。如果您需要指向不同的服务器怎么办?使用此代码,应用程序将需要部署更改。使用 .config 可以在后台进行更改
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

      您可以使用 My.Settings.ConnectionString 轻松访问它。

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

      【讨论】:

        猜你喜欢
        • 2015-02-24
        • 2014-06-15
        • 2013-02-01
        • 1970-01-01
        • 2011-06-24
        • 2011-05-06
        • 2016-09-22
        • 2023-04-04
        • 2018-01-06
        相关资源
        最近更新 更多