我的这段代码出了什么问题,我觉得select查询错了?

时间:2010-12-02 08:52:41

标签: asp.net vb.net

我的代码有什么问题,我认为选择查询是错误的:

我有一个textbox1,textbox2和textbox3

当我在textbox1中键入employee id并在textbox2中键入Email时,然后在textbox3中根据员工ID和数据库中的电子邮件检索密码...

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT Password FROM a1_admins WHERE EmployeeId" = TextBox1.Text And "Email" = TextBox2.Text, SQLData)
            Dim SQLData As New System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True")
            Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT Password FROM a1_admins WHERE EmployeeId =" & TextBox1.Text & "And" & "Email" = TextBox2.Text, SQLData)
            SQLData.Open()
            Dim dtrReader As System.Data.SqlClient.SqlDataReader = cmdSelect.ExecuteReader()
            If dtrReader.HasRows Then
                While dtrReader.Read()
                    TextBox3.Text = dtrReader("Password")
                End While
            Else
                TextBox3.Text = ("No customer found for the supplied ID.")
            End If

            dtrReader.Close()
            SQLData.Close()
        End Sub

4 个答案:

答案 0 :(得分:2)

  1. 为什么不给你的控件正确的名字?
  2. 永远不要通过字符串连接构建查询字符串,而是使用SqlParameter(特别是在ASP.NET应用程序中!),以避免sql注入。
  3. 也许你也想使用HttpServerUtility.HtmlDecode,以避免在回发时注入javascript和其他令人讨厌的东西。
  4. 对SqlConnection和SqlDataReader等一次性对象使用usings
  5. 是的,它肯定是你的SQL。必须存在语法错误,因为查询字符串未正确连接。

答案 1 :(得分:1)

您没有在值周围添加引号,也没有添加任何额外的空格。

您的查询确实应该包含以下参数:

SELECT Password FROM a1_admins WHERE EmployeeId = @employeeID And Email = @email

答案 2 :(得分:0)

如果您发布了实际的错误消息,那将非常有用。

但是,我认为您的SQL查询缺少一些空格。它应该是:

Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT Password FROM a1_admins WHERE EmployeeId = " & TextBox1.Text & " And " & "Email = '" & TextBox2.Text & "'", SQLData)

修改

正如其他答案所指出的那样,你应该使用参数。我提供了MSDN article on using Parameters with the SQLCommand

的链接

答案 3 :(得分:0)

试试这个(注意引号) - 假设EmloyeeId是一个int而Email是某种varchar

Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT Password FROM a1_admins WHERE EmployeeId =" & TextBox1.Text & " And Email = '" & TextBox2.Text & "'", SQLData)