vb.net sql数据库登录查询

vb.net sql数据库登录查询,sql,sql-server,vb.net,login,Sql,Sql Server,Vb.net,Login,我的sql数据库中有一个表,其中包含: 主键:ID 外键:搬运工ID 第1列:用户名 第2列:密码 ID是唯一的,外键可以是1(JKP)或2(Clarke),用户名和密码每次都不同 我的表格有一个下拉框,里面有公司的名字:JKP、克拉克 如果选择JKP,则将1传递给文本框 如果选择Clarke,则将2传递给文本框 然后是用户名和密码文本框 我有一个类似的工作日志,但我似乎无法让这个工作。我假设文本框值可以满足外键列的要求,用户名和密码来自文本框。这是我得到的代码,当我运行它时,我只会得到一个

我的sql数据库中有一个表,其中包含:

  • 主键:ID
  • 外键:搬运工ID
  • 第1列:用户名
  • 第2列:密码
ID是唯一的,外键可以是1(JKP)或2(Clarke),用户名和密码每次都不同

我的表格有一个下拉框,里面有公司的名字:JKP、克拉克

如果选择JKP,则将1传递给文本框

如果选择Clarke,则将2传递给文本框

然后是用户名和密码文本框

我有一个类似的工作日志,但我似乎无法让这个工作。我假设文本框值可以满足外键列的要求,用户名和密码来自文本框。这是我得到的代码,当我运行它时,我只会得到一个消息框,说用户名或密码不正确

有人能告诉我哪里出了问题吗

     Try

        Dim haulier As Integer
        If combohaulier.SelectedItem = "John K Philps" Then
            haulier = 1
        Else
            haulier = 2
        End If

        Dim objconnection1 As SqlConnection = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Cara\Documents\Visual Studio 2012\Projects\Online Portal Solutions\Online Portal Solutions\Online Portal Solutions Database.mdf;Integrated Security=True")
        objconnection1.Open()

        Dim SelectStmt1 As String = "SELECT * FROM [2HaulierLogIn] WHERE HaulierID='" & haulier & "' AND Username='" & txt_cusername.Text & "' COLLATE SQL_Latin1_General_CP1_CS_AS AND Password='" & txt_cpassword.Text & "' COLLATE SQL_Latin1_General_CP1_CS_AS ;"
        Dim objcommand1 As SqlCommand = New SqlCommand(SelectStmt1, objconnection1)
        Dim reader1 As SqlDataReader = objcommand1.ExecuteReader

        If reader1.Read Then
            If haulier = 1 And txt_hpassword.Text <> reader1("Password").ToString And txt_husername.Text <> reader1("Username").ToString Then
                frm_Rhauljkphome.Show()
                Me.Hide()
                txt_husername.Clear()
                txt_hpassword.Clear()
            End If

        ElseIf reader1.Read Then
            If haulier = 2 And txt_hpassword.Text <> reader1("Password").ToString And txt_husername.Text <> reader1("Username").ToString Then
                Me.Hide()
                frm_Shaulclarkehome.Show()
                txt_husername.Clear()
                txt_hpassword.Clear()
            End If

            Else
                Static count1 As Integer = 0
                Dim prompt1 As DialogResult = MessageBox.Show("Invaild Username or Password.", "Login Error",
                                                             MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning)
                Select Case prompt1
                    Case Windows.Forms.DialogResult.Retry
                        txt_husername.Text = ""
                        txt_hpassword.Text = ""
                        count1 += 1
                        If count1 = 3 Then
                            MessageBox.Show("High value of failed login attempts." & vbCrLf & "Application will be terminated for security reasons.", "Error",
                                            MessageBoxButtons.OK, MessageBoxIcon.Stop)
                            End
                        End If
                    Case Windows.Forms.DialogResult.Cancel
                        Application.Exit()
                End Select
            End If
    Catch ex As Exception

    End Try
试试看
整型牵引机
如果combohaulier.SelectedItem=“John K Philps”,则
搬运工=1
其他的
拖运工=2
如果结束
Dim objconnection1作为SqlConnection=New SqlConnection(“数据源=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Cara\Documents\Visual Studio 2012\Projects\Online Portal Solutions\Online Portal Solutions Database.mdf;Integrated Security=True”)
objconnection1.Open()
Dim SelectStmt1 As String=“SELECT*FROM[2HaulierLogIn]其中HaulierID='”&haulier&“'和Username='”&txt\u cusername.Text&“'COLLATE SQL\u Latin1\u General\u CS\u As和Password='”&txt\u cpassword.Text&“'COLLATE SQL\u Latin1\u General\u CP1\u CS\u As;”
Dim objcommand1 As SqlCommand=新SqlCommand(选择STMT1,objconnection1)
Dim读取器1作为SqlDataReader=objcommand1.ExecuteReader
如果读取器为1,则读入
如果haulier=1和txt_hpassword.Text reader1(“密码”).ToString和txt_husername.Text reader1(“用户名”).ToString,则
frm_Rhauljkphome.Show()
我躲起来
txt_husername.Clear()
txt_hpassword.Clear()
如果结束
阅读者1.然后阅读
如果haulier=2和txt_hpassword.Text reader1(“密码”).ToString和txt_husername.Text reader1(“用户名”).ToString,则
我躲起来
frm_Shaulclarkehome.Show()
txt_husername.Clear()
txt_hpassword.Clear()
如果结束
其他的
静态计数1为整数=0
Dim prompt1作为DialogResult=MessageBox.Show(“Invaild用户名或密码”,“登录错误”,
MessageBoxButtons.RetryCancel,MessageBoxIcon.Warning)
选择案例提示1
案例Windows.Forms.DialogResult.Retry
txt_husername.Text=“”
txt_hpassword.Text=“”
count1+=1
如果count1=3,则
MessageBox.Show(“失败登录尝试的高值”。&vbCrLf&“出于安全原因,应用程序将被终止。”,“错误”,
MessageBoxButtons.OK,MessageBoxIcon.Stop)
终点
如果结束
案例Windows.Forms.DialogResult.Cancel
Application.Exit()
结束选择
如果结束
特例
结束尝试
只是一个猜测, 如果HaulierID是外键,并且可能具有1(JKP)或2(Clarke)的值, 它需要那些单引号包装在sql语句的TextBox1.Text值上吗

Dim SelectStmt1 As String = "SELECT * FROM [2HaulierLogIn] WHERE Username='" & _
    txt_cusername.Text & "' COLLATE SQL_Latin1_General_CP1_CS_AS AND Password='" & _
    txt_cpassword.Text & "' COLLATE SQL_Latin1_General_CP1_CS_AS AND HaulierID=" & _
    TextBox1.Text & ";"

谢谢你的帮助,我已经把那些东西拿出来了,但是没有什么不同。我想这和读者有关。我对上面的帖子做了一些改动。我将用我现在的内容编辑这个问题。我已经做了好几天了。我真的需要让它工作起来。