2012-08-14 45 views
1

我收到了錯誤「無效的投射異常未處理」。我正在使用SQL Server 2008和Visual Studio 2008.我從String「Jack」轉換爲Boolean類型無效。我正嘗試在VB.NET中創建一個登錄表單。我在運行我的表單時遇到了一些困難

看我的形式下面的代碼:

Imports System.Boolean 

Imports System.Data.SqlClient 

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim username As String 
     Dim pswd As String 
     Dim conn As SqlConnection 
     Dim cmd As SqlCommand 
     Dim reader As SqlDataReader 

     username = txt_username.Text 
     pswd = txt_password.Text 
     txt_username.Text = Focus() 
     txt_password.Visible = "False" 
     Try 
      conn = New SqlConnection("data source=TAMIZHAN\SQLEXPRESS;persistsecurity info=False;initial catalog=log;User ID=sa;Password=123"); 
      cmd = New SqlCommand("Select usename,passw from Userlog where usename='" + username + "' & passw='" + pswd + "'") 
      conn.Open() 
      reader = cmd.ExecuteReader() 
      If (String.Compare(pswd and '"+passw+"')) Then 
       MsgBox("Success") 
      End If 
      If (reader.Read()) Then 

       MsgBox("Login success") 

      End If 
      conn.Close() 
     Catch ex As Exception 
      MsgBox("Error"+ex.Message()); 
     End Try 
    End Sub 
End Class 
+1

您是否試過單步執行代碼以查看它在哪一行產生錯誤?這將有助於診斷問題。 – Jared 2012-08-14 14:59:34

回答

1

的string.Compare返回一個整數一個布爾值,應該以這種方式在MSDN上

被稱爲

If (String.Compare(pswd,passw) = 0) Then 
    MsgBox("Success") 
End If 

see the references

但是你的代碼現在有很多問題:

  • 您正在使用字符串連接來構建您的sql文本 (SqlInjection,引用問題)。
  • 您不使用Using語句(在 異常的情況下連接保持打開狀態)。
  • 比較邏輯似乎是絕對不需要的。
+0

還有一個像passw沒有聲明的錯誤 – 2012-08-15 06:18:57

相關問題