我创建了一个函数,用于检查数据库中是否已存在用户名。我正在使用SqlCommand
sql-parameterd以避免Sql-Injection。要执行,我应该使用类SqlAccess
,因为整个现有项目都是以此为基础构建的。
我写的代码...
'Check if username already exists'
Public Shared Function usernameExists(Username As String) As Boolean
Dim sqlCommand As SqlCommand = New SqlCommand("Select UserLogin From [User] where UserLogin = '@Username'")
Dim param As SqlParameter = New SqlParameter("Username", SqlDbType.VarChar)
param.Value = Username
sqlCommand.Parameters.Add(param)
Try
SQLAccess.OpenSQLConnection(sqlCommand, SetDBConnectionData) 'SqlDBConnectionData is a function which returns a structSQlAccess'
Dim dsUsers As DataSet = SQLAccess.SQLQueryToDS(sqlCommand)
If dsUsers.Tables(0).Rows.Count > 0 Then
Return True
Else
Return False
End If
Catch ex As Exception
Return True 'TODO - Error Mgs
End Try
End Function
但这不起作用,DataSet
不包含行。谁能告诉我如何正确执行此操作?
不要将参数放在撇号中,如下所示:
"Select UserLogin From [User] where UserLogin = '@Username'"
但是就像这里:
"Select UserLogin From [User] where UserLogin = @Username"
另外,我假设这SQLAccess
是一个管理连接的自定义类。我强烈建议您不要在ASP.NET中使用此类帮助程序类,因为它只是令人讨厌的错误的根源,如果您的连接是Shared
:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句