-1

在连接到 Oracle 数据库的 VB.Net 的登录表单中。有没有办法插入 If 语句以将不同的用户引导到不同的表单。例如,会计主页的会计或驱动程序主页的驱动程序尽管所有 ID 和密码都在数据库中的一个表中。

数据库中有一个 POSITION 字段,我想用它来区分不同用户的访问级别。

这是到目前为止工作的代码:

Dim conn As New OleDb.OleDbConnection

conn.ConnectionString = _
"Provider=msdaora;Data Source=orabis;User Id=112221800;Password=112221800;"


conn.Open()

Dim parmuser As New OleDb.OleDbParameter

parmuser.OleDbType = OleDb.OleDbType.Char

parmuser.Value = txtStaffNo.Text

Dim parmpass As New OleDb.OleDbParameter

parmpass.OleDbType = OleDb.OleDbType.Char

parmpass.Value = txtPassword.Text



Dim cmd As New OleDbCommand

cmd.Connection = conn

cmd = New OleDbCommand("select STAFFID,PASSWORD from STAFF where STAFFID ='" & txtStaffNo.Text & "' and PASSWORD ='" & txtPassword.Text & "'", conn)

cmd.CommandType = CommandType.Text

Dim dr As OleDb.OleDbDataReader



dr = cmd.ExecuteReader()


If txtStaffNo.Text = "" Or txtPassword.Text = "" Then

    MessageBox.Show("You have not entered any values!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)

ElseIf dr.Read() Then

    txtStaffNo.Text = dr("STAFFID")

    txtPassword.Text = dr("PASSWORD")

    MsgBox("Access Allowed")



    CustOption.Show()
    Me.Hide()

Else

    'MessageBox.Show("Wrong Username and Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    'intCount = intCount + 1



End If
4

2 回答 2

0

对于网站/应用程序使用

switch (position){
case "Admin":
    Server.Transfer("AdminHomePage.aspx";
    brea;
case "blabla":
//and so on
default:
    Server.Transfer("Home.aspx"

}

对于 windows 窗体,答案是相似的。但是您可以选择一种形式。IEnew FormAdminHome().ShowDialog()

于 2013-02-20T15:57:36.787 回答
0

我认为你回答了你自己的问题。只需将 POSITION 添加到您的查询中,然后说如下内容:

If dr("POSITION")="JANITOR" Then
    //Go to janitor site
ElseIf ...
    ...
End If

就像其他人所说的那样,你真的不应该像那样传递密码。您返回密码实际上是有原因的吗?如果查询甚至返回用户“已通过身份验证”的任何内容,那为什么还要返回呢?

于 2013-02-20T16:59:21.383 回答