在 vb.net 中使用 LINQ-to-SQL 和多个 select 语句

using LINQ-to-SQL in vb.net with multiple select statement

我对 vb.net 和 SQL 的 LINQ 非常陌生。 我整天都在尝试这样做,但它似乎根本不起作用。非常感谢您的帮助。

我有一个名为 users 的 table,其中包含 4 列

+---------+-----------+---------------+--------------+
| user_id | user_name | user_password | user_stopped |
+---------+-----------+---------------+--------------+
|       1 | admin     | admin         | false        |
|       2 | user2     | 2             | false        |
|       3 | user3     | 3             | true         |
+---------+-----------+---------------+--------------+

我有一个来自三个文本框 "txtuserid" & "textusername" & "txtuserpassword" 和一个按钮名称 "login"

1) 在 "login" 按钮的 "on_click" 事件上,我有这个查询

Dim query = From check In Me.MydatabaseDataSet.users
            Where check.user_id = Me.txtuserid.Text
            Select check.user_name, check.user_password, check.user_stopped

我想做这样的事情:

if query.check.user_stopped= true then
   msgbox("this user has no permission")
else
    me.txtusername.text= query.user_name
    if me.txtuserID.text= query.check.user_id and 
       me.txtuserpassword.text= query.check.user_password then
       me.hide()
       form2.show()
    end if
end if

我已经尝试了几个小时,但似乎根本没有任何效果。 我正在使用 VB.net 2010 和 SQL 数据库。

非常感谢您的帮助。

其实Linq真的很简单

Dim id as Integer
integer.TryParse(Me.txtuserid.Text, id) 
Dim query = From check In Me.MydatabaseDataSet.users
            Where check.user_id = id
            Select check

会简单地 return 所有具有给定 Id 的用户(Me.txtuserid.Text - 转换为整数,它是一个整数,对吧?)。

如果您特别想要 3 列:

Dim query = From check In Me.MydatabaseDataSet.users
            Where check.user_id = id
            Select New With {check.user_name, check.user_password, check.user_stopped}

但请记住,此版本是 returning 匿名类型,而前一个版本是 returns 用户类型。

仔细想想,user_id是一个主键(唯一)。因此,您不需要像上面 "query" 那样取回 "collection",您只需要一个用户:

Dim user = Me.MydatabaseDataSet.users.SingleOrDefault(Function(check) check.user_id = id)

如果该 ID 存在,则用户具有该用户的属性(键入的数据),否则为 NULL。

此代码与您稍后要执行的代码相匹配:

if user is not nothing
       msgbox("unknown user")
else
    if user.user_stopped= true then
       msgbox("this user has no permission")
    else
        me.txtusername.text= user.user_name
        if me.txtuserID.text= user.user_id and 
           me.txtuserpassword.text= user.user_password then
           me.hide()
           form2.show()
        end if
    end if
end if

注意:我假设这只是出于爱好测试目的,在现实世界中你永远不会想要存储纯文本密码。