查询SQL数据库并将结果存储在变量VB.Net中

时间:2014-01-20 23:16:25

标签: sql vb.net

我正在尝试使用文本框字段查询SQL DB并从数据库中检索列并将其存储在变量中,以便我可以在我的站点中的其他位置使用它。我的网络表单要求用户输入一些项目,如姓名和邮政编码。

我的数据库有3列;电子邮件地址,邮政编码和ID。我需要输入表单来查询数据库并返回与用户输入的“邮政编码”匹配的“电子邮件地址”

我理解SQL SELECT语句和连接字符串是正确的。我的查询正在运行,我似乎无法弄清楚如何将返回的“电子邮件地址”存储在变量中。任何帮助,将不胜感激。

Dim strconnection As String, strSQL As String, strZipCheck As String
    Dim objconnection As OleDbConnection = Nothing
    Dim objcmd As OleDbCommand = Nothing
    Dim RREmail As String = Nothing
    Dim zipQuery As String = zipCodeBox.Text
    'connection string
    strconnection = "provider=SQLOLEDB;Data Source=XXX.XXX.XXX.XXX;Initial Catalog=XXXXXXX;User ID=XXXX;Password=XXXXXXXX;"

    objconnection = New OleDbConnection(strconnection)
    objconnection.ConnectionString = strconnection


    'opens connection to database
    objconnection.Open()
    strSQL = "SELECT [EMAIL ADDRESS] FROM ZIPCODEDATA WHERE [ZIP CODE] = @ZIP CODE "
    objcmd = New OleDbCommand(strSQL, objconnection)

    RREmail = CType(objcmd.ExecuteScalar(), String)
    lblRREmail.Text = RREmail
    objconnection.Close()

1 个答案:

答案 0 :(得分:0)

虽然其他评论确实指出了语法的特殊缺陷,但我想解决存储变量的问题并进一步考虑。我通常不使用参数化连接,除非我调用存储过程并需要输出参数。相反,这是我经常创建数据库连接并获得结果的方法。

首先我创建一个名为dbConn的公共类,所以我不必写出一百万次。

Imports System.Data.SqlClient
Public Class dbConn
    Public Property strSQL As String
    Private objConn As SqlClient.SqlConnection = _
            New SqlClient.SqlConnection("Data Source=(local)\dev;Initial Catalog=testDataBase;Persist Security Info=False;Integrated Security = true;")
    Public Function getDt() As DataTable
        Dim Conn As New SqlClient.SqlConnection
        Dim da As SqlClient.SqlDataAdapter
        Dim dt As New DataTable
        Try
            objConn.Open()
            da = New SqlClient.SqlDataAdapter(strSQL, objConn)
            da.Fill(dt)
            da = Nothing
            objConn.Close()
            objConn = Nothing
        Catch ex As Exception
            objConn.Close()
            objConn = Nothing
        End Try
        Return dt
    End Function
End Class

然后从另一个类(假设它的form1)我调用该函数来获取返回给我的数据表。在这种情况下,我选择TOP 1以保存您的理智,以防每个邮政编码有多个电子邮件地址。

Public sub getdata() 

    Dim strEmailAddress As String = Nothing

    Dim dt As New DataTable
    Dim da As New dbConn
    da.strSQL = " select top 1 [email address] from [zipcode] " _
            & " where [zip code] = '" & strZipCode & "'" _
            & " order by [email address] asc"
    dt = da.getDt
    If dt.Rows.Count > 0 Then
        If Not IsDBNull(dt.Rows(0)(0).ToString) Then
            strEmailAddress = dt.Rows(0)(0).ToString
        End If
    End If
End Sub 

从那里你可以在设置后在sub中使用strEmailAddress,或者你可以将字符串声明移动到sub之外作为公共字符串声明在其他地方使用它,或者你可以创建其他类,如带有a的电子邮件类strEmailAddress的公共属性将其传递给,等等。

我希望有些东西可以帮助您了解如何处理您的问题。