1

我收到错误“未处理的无效强制转换异常”。我正在使用 SQL Server 2008 和 Visual Studio 2008。我从字符串“Jack”转换为布尔类型无效。

请参阅下面我的表单代码:

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
4

1 回答 1

1

string.Compare 返回一个整数而不是布尔值,应该以这种方式调用

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

参阅MSDN 上的参考资料

但是,您的代码目前存在许多问题:

  • 您正在使用字符串连接来构建您的 sql 文本(SqlInjection,引用问题)。
  • 您不使用 Using 语句(在出现异常时连接保持打开状态)。
  • 似乎绝对不需要比较逻辑。
于 2012-08-14T14:59:46.427 回答