如何在vb.net中表示当前登录的用户
如何在vb.net中表示当前登录的用户
我急需帮助。\n我正在使用SQL Server和vb.net。在我的个人信息窗体上,我正在尝试根据当前登录的用户填充文本框中的用户信息。\n然而,我不知道如何表示当前用户的值。我正在尝试将该值作为参数传递。在#idontknow的位置应该放什么?\n窗体的代码:\n
Private Sub PersonalInfo_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim connection As New SqlConnection("server=DESKTOP-PL1ATUA\DMV;Database=EHR;Integrated Security=True") Dim dt As New DataTable connection.Open() Dim sqlcmd As New SqlCommand("SELECT * FROM PATIENT WHERE PATIENT_ID = @id", connection) Dim sqlda As New SqlDataAdapter(sqlcmd) Dim user_email As Object = Nothing sqlcmd.Parameters.AddWithValue("@id", #idontknow) Dim reader As SqlDataReader = sqlcmd.ExecuteReader() While reader.Read() fname.Text = reader("PATIENT_FNAME") ComboBox1.Text = reader("patient_gender") TextBox4.Text = reader("patient_street") TextBox5.Text = reader("patient_city") TextBox6.Text = reader("patient_state") TextBox7.Text = reader("patient_zip") TextBox8.Text = reader("patient_phone") email.Text = reader("user_email") End While End Sub
\n在这里,我通过检查电子邮件和密码在一个Windows窗体上验证用户凭据,主键(patient_id
)在新用户注册时插入时生成(此代码位于不在下面显示的单独窗体上):\n
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim connection As New SqlConnection("server=DESKTOP-PL1ATUA\DMV;Database=EHR;Integrated Security=True") Dim command As New SqlCommand("select * from patient where user_email = @email and user_pass = @pass", connection) command.Parameters.Add("@email", SqlDbType.VarChar).Value = email.Text command.Parameters.Add("@pass", SqlDbType.VarChar).Value = pass.Text Dim adapter As New SqlDataAdapter(command) Dim table As New DataTable() adapter.Fill(table) If table.Rows.Count() <= 0 Then MessageBox.Show("用户名或密码无效") Else MessageBox.Show("登录成功") command.CommandType = CommandType.StoredProcedure dashboard.Show() End If End Sub
问题的原因是目前的登录代码只是检查是否存在具有适当用户名和密码的记录,而不是将该记录的patient_id存储在可以在代码的其他地方引用的位置。解决方法是将patient_id存储在可以在代码的其他地方引用的位置,例如一个共享属性或一个无法实例化的类。无论采用哪种方法,都可以在登录代码中赋值给CurrentUser.PatientId,然后在代码中的其他地方访问其值。
另外,登录代码似乎直接将密码框中的内容与数据库中密码字段的内容进行比较,这强烈暗示您以明文形式存储密码,这是不安全的。应该阅读有关如何安全存储密码的详细概述。
关于如何设置CurrentUser.PatientId的值,如果数据库字段是字符串,则将PatientId属性声明为字符串类型。
感谢反馈!我决定使用类并调用currentuser.patientid,但我不知道如何设置CurrentUser.patientID的值,因为它是一个整数,但我赋值给它的选择查询是一个字符串。
可能我没有仔细阅读,但我没有看到您在问题中透露了数据库中patient_id字段的数据类型,所以我只是猜测为整数。如果数据库字段是字符串,则将PatientId属性声明为字符串类型。