使用来自Web配置的连接字符串而不是数据集属性

时间:2012-08-17 16:16:24

标签: asp.net sql-server vb.net

我使用wizzard构建了一个数据集,并在那里添加了一个连接。

我现在想要使用在我的web配置中定义的连接字符串,而不是在数据集中设置的连接字符串。

我有以下代码(我已经采取了很多你不需要看的东西)

  

部分公共类下载项目       继承System.Web.UI.Page

Private dtmboFeed As dsmbo.mboFeedDataTable
Private tamboFeed As New dsmboTableAdapters.mboFeedTableAdapter
Private itemCount As Integer = 0
Private changedItem As Boolean = False
Private headSource As String
Private footSource As String
Private sideSource As String
Private lastHead As String
Private lastFoot As String
Private lastSide As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    feedChecks()
    If changedItem = True Then
        If itemCount = "3" Then
            savetodatabase(headSource, footSource, sideSource)
        End If
    End If
End Sub

Private Sub checkSite(ByVal URL As String, ByVal Type As String)

    Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(URL)
    request.UserAgent = ".NET Framework Test Client"
    Dim response As System.Net.HttpWebResponse = request.GetResponse()

    Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())

    Dim sourcecode As String = sr.ReadToEnd()
    Dim compareHead As Integer
    Dim compareFoot As Integer
    Dim compareSide As Integer

    Select Case Type
        Case "headSource"
            headSource = sourcecode
            compareHead = String.Compare(headSource, lastHead)
        Case "footSource"
            footSource = sourcecode
            compareFoot = String.Compare(footSource, lastFoot)
        Case "sideSource"
            sideSource = sourcecode
            compareSide = String.Compare(sideSource, lastSide)
    End Select

    If Not compareHead = "0" Then
        changedItem = True
    End If
    If Not compareFoot = "0" Then
        changedItem = True
    End If
    If Not compareSide = "0" Then
        changedItem = True
    End If

    itemCount = itemCount + 1

End Sub

Private Sub feedChecks()

    Dim lastImport As DateTime
    dtmboFeed = New dsmbo.mboFeedDataTable
    dtmboFeed = tamboFeed.GetCode()

    For Each rFeed As dsmbo.mboFeedRow In dtmboFeed
        lastImport = rFeed.LastImport
        lastHead = rFeed.HeaderCode
        lastFoot = rFeed.FooterCode
        lastSide = rFeed.SideCode
    Next

    If lastImport > System.DateTime.Now.AddDays(1) Then
        checkSite("http://www.xxx.me/sss/header.html", "headSource")
        checkSite("http://www.xxx.me/sss/footer.html", "footSource")
        checkSite("http://www.xxx.me/sss/sidenav.html", "sideSource")
    Else
        Exit Sub
    End If


End Sub

Private Sub savetodatabase(ByVal HeaderCode As String, ByVal FooterCode As String, ByVal SideCode As String)

    dtmboFeed = tamboFeed.GetData()
    Dim rFeed As dsmbo.mboFeedRow

    rFeed = dtmboFeed.NewmboFeedRow

    rFeed.HeaderCode = HeaderCode
    rFeed.FooterCode = FooterCode
    rFeed.SideCode = SideCode
    rFeed.LastImport = System.DateTime.Now
    rFeed.Verified = "True"

    dtmboFeed.AddmboFeedRow(rFeed)
    tamboFeed.Update(dtmboFeed)

    lblCode.Text = lblCode.Text & "All downloaded"

End Sub End Class

编辑:

根据要求提供下面的更新代码。我收到错误说

Error   53  Value of type 'String' cannot be converted to 'System.Data.SqlClient.SqlConnection'.

代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim constring As String
        constring = ConfigurationManager.ConnectionStrings("ConnectString").ToString()
        tamboFeed.Connection = constring

        feedChecks()
        If changedItem = True Then
            If itemCount = "3" Then
                savetodatabase(headSource, footSource, sideSource)
            End If
        End If
    End Sub

2 个答案:

答案 0 :(得分:6)

您可以将连接字符串作为

Dim constring as String
constring = ConfigurationManager.ConnectionStrings("YouconnectionStringNameinWebConfig").ConnectionString

现在首先转到DataSet设计视图,选择表格,右键单击tableAdapter并将其连接修改器更改为Public(见下图),现在您可以在代码隐藏中访问适配器连接属性。

tamboFeed.Connection = constring 

请参阅下图,了解更改访问修饰符。enter image description here

图片参考:Link

更新回答: 问题是您已将连接字符串放在webconfig的AppSettings部分中,将连接字符串添加到ConnectionString部分。见下面的代码

    <connectionStrings>     
<add  name="ConnectString" connectionString="data source=server;initial catalog=database;persist security info=False;user id=adsadasda;password=asdsadasd;packet size=4096" />
 </connectionStrings>

答案 1 :(得分:0)

tamboFeed.Connection的类型为System.data.SqlClient.SqlConnection,因此无法接受字符串赋值。只要数据集连接修饰符设置为Public,就可以在一行中分配web.config中的连接字符串,如下所示:

tamboFeed.Connection.ConnectionString = ConfigurationManager.ConnectionStrings("YouconnectionStringNameinWebConfig").ConnectionString