2014-02-13 80 views
0

我有我的SQL数据库中的表:vb.net SQL数据库日志查询

  • 主键:ID
  • 外键:运输者ID
  • 列1:用户名
  • 列2 :密码

该ID是唯一的,外键可以是1(JKP)或2(Clarke),每次用户名和密码都不相同。

我的形式得到了下拉框的下降,其中包括公司的名字:JKP,克拉克

如果JKP选择它传递1到文本框

如果克拉克选择它传递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 

回答

0

只是一个猜测, 如果HaulierID是一个外键,并且可以具有1(JKP)或2(克拉克)的值, 将它需要那些单引号缠绕在TextBox1.Textsql声明?

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 & ";" 
+0

感谢您的帮助,我已将这些事情拿出来了,但没有任何区别。我认为这与读者有关。我已经从上面发布的内容稍微改变了它。我将用我现在拥有的东西编辑这个问题。我已经有好几天了。我真的需要让它工作。 –