我正在尝试使用文本框字段查询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()
答案 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的公共属性将其传递给,等等。
我希望有些东西可以帮助您了解如何处理您的问题。