mysql - ODBC select 语句获取 bool 值

标签 mysql vb.net ado.net odbc

我正在尝试检查我的 MySQL 数据库中是否存在用户名和密码,如果存在,我需要返回 true,否则返回 false。这是我的 atm:

myconn.Open()

Dim selectSQL As String = "SELECT * 
                             FROM member 
                            WHERE Username = " & objMember.Username & " 
                              AND Password= " & objMember.Password
Dim cmd As New OdbcCommand(selectSQL, myconn)

cmd.ExecuteNonQuery()

If cmd.Parameters.Count = 1 Then
    Return True
Else
    Return False
End If

myconn.Close()
myconn.Dispose()

我得到的只是 0,即使用户名和密码存在!或者我的编码有误?


解决方案

myconn.Open()

Dim count As Integer = 0

Dim selectSQL As String = "SELECT COUNT(*)
                             FROM member 
                            WHERE Username = ? 
                              AND Password= ?"
Dim cmd As New OdbcCommand(selectSQL, myconn)

cmd.Parameters.AddWithValue("LidLoginnaam", objLid.LidLoginnaam)
cmd.Parameters.AddWithValue("LidWachtwoord", objLid.LidWachtwoord)

count = Convert.ToInt32(cmd.ExecuteScalar())

If count = 1 Then
    Return True
Else
    Return False
End If

myconn.Close()
myconn.Dispose()

最佳答案

不要使用字符串连接来构建 SQL 查询,而是使用参数。

http://msdn.microsoft.com/en-us/library/system.data.odbc.odbcparameter.aspx

Dim count as Integer = 0

Try
    Dim sql As String = "SELECT COUNT(*) FROM member WHERE Username = @username AND Password = @password"
    Dim cmd As New SqlCommand(sql, conn)
    cmd.Parameters.AddWithValue("@username", objMember.Username)
    cmd.Parameters.AddWithValue("@password", objMember.Password)
    count = Convert.ToInt32(cmd.ExecuteScalar())
Catch ex As Exception
    Console.WriteLine(ex.Message)
End Try

Return (count > 0)

如果您不使用从查询中检索到的数据,则只需使用 ExecuteScalar 获取与您的用户名和密码匹配的记录数。

http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.executescalar.aspx

如果计数 > 0(意味着有匹配用户名和密码的记录),这基本上返回 TRUE。

另请在此处查看不同命令执行方法之间的区别:http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand(v=vs.71).aspx .您正在使用 ExecuteNonQuery 来检索不正确的记录。

希望这对您有所帮助。

关于mysql - ODBC select 语句获取 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005209/

相关文章:

python - 根据某种逻辑保持对象中数据更新的最佳方法?

.net - 彩色动画不起作用

vb.net - 在 vb.net 中使用私有(private)方法实现接口(interface)

c# - SQL Server 2008 中的事务问题

entity-framework - Entity Framework ,数据库优先还是模型优先?

mysql - SELECT DISTINCT 没有做我希望它会做的事情

PHP 不将数据保存到附属脚本中的数据库

EditorFor 模板的 VB.NET 语法?

c# - SQL语句中语法错误的问题

php - Mysql 5.7.11 - 如何管理 php 类中的空日期