我需要一些帮助才能将我的数据(用户名和密码)插入到mssql数据库中。 使用linq到sql这是我的解决方案,但在 - >标记的行我总是得到一个EntityCommandExecutionException。我有一个带有两个文本框的html网站,我从中获取String并通过javascript发送请求 - ajax到vb.net。
我现在正在做研究很长时间,我找不到任何解决方案。
正如您所看到的,我想检查是否存在具有此用户名的数据行,但在表中没有数据行的情况下它不起作用。这意味着查询应该是'NULL'或者我错了吗?
Public Shared Function addData(ByVal username As String, ByVal passwort As String)
Dim db = New LoginContext
Dim benutzer = New Benutzer
Dim available As Boolean = False
Dim sha As New SHA1CryptoServiceProvider
Dim vName = (_
From b In db.BenutzerSet
Where b.Name = username.ToLower()
Select b)
-> If vName.Count() = 0 Or vName Is Nothing Then
benutzer.Name = username.ToLower()
Dim bytesToHash() As Byte
bytesToHash = System.Text.Encoding.ASCII.GetBytes(passwort)
bytesToHash = sha.ComputeHash(bytesToHash)
Dim encPassword As String = ""
For Each b As Byte In bytesToHash
encPassword += b.ToString("x2")
Next
benutzer.Passwort = encPassword
db.BenutzerSet.Add(benutzer)
db.SaveChanges()
available = True
Else
available = False
End If
Return available
End Function
感谢您的帮助。
答案 0 :(得分:2)
使用vName.Any()
检查您的查询中是否有任何记录!
-> If vName.Any() = false Then
也将Dim benutzer = New Benutzer
更改为Dim benutzer As New Benutzer
答案 1 :(得分:2)
我对你的问题没有答案,但这里有一些反馈:
vName.Count() = 0 Or vName Is Nothing
的顺序错误,因为VB从左到右执行它们。如果vName
实际上是Nothing,那么您将获得NullReferenceException
,因为vName.Count()
首先执行。Where
和Select
)实际上永远不会返回Nothing
,因此您无需检查vName Is Nothing
;这是多余的。vName.Any()
与vName.Count() == 0
具有相同的结果,但更具可读性,并且大部分时间都会在更高效的SQL查询中生成。