【发布时间】:2015-11-01 12:20:18
【问题描述】:
我有一个使用管理员和员工登录的程序。我在 SQL Server 中有两个名为 Admin 和 Employee 的表。
我只有一个登录窗口。我有两种形式AdminForm 和EmpForm。输入用户名和密码后,我想读取这两个表。
- 如果用户名和密码属于表
Admin,那么它将显示AdminForm - 但是当用户名和密码属于表
Employee时,它会显示EmpForm
我是 SQL Server 的新手。反正有可能吗?截至目前,这是我的代码:
private void btnLogin_Click(object sender, EventArgs e)
{
using (var connect = sqlcon.getConnection())
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM administrator WHERE username = @username AND password = @password"))
{
cmd.Connection = connect;
connect.Open();
cmd.Parameters.Add("@cusername", SqlDbType.Char).Value = tbUsername.Text;
cmd.Parameters.Add("@cpassword", SqlDbType.Char).Value = tbPassword.Text;
using (SqlDataReader re = cmd.ExecuteReader())
{
if (re.Read())
{
}
else
{
}
}
}
}
}
【问题讨论】:
-
不要不要将您的密码存储为纯文本。阅读:stackoverflow.com/questions/1054022/…
-
好的,我将尝试使用哈希加密。谢谢!
-
为什么要使用两张表?使用具有用户名、密码哈希(或纯文本密码,直到应用程序正常工作)和 userType 的表(这可以是 SQL 中的 int 和 C# 中的枚举,因为 Enum.TryParse/Enum.Parse 还考虑了字符串时的情况正在尝试解析的不是枚举中的字段而是数值,例如: enum TestEnum { Test1, Test2 }, Enum.Parse(typeof(TestEnum), "1") == TestEnum.Test2。
-
感谢您的快速响应!现在就试试。之后会公布结果。谢谢!
-
在此处查看“markle”答案,了解更好的表格设计:stackoverflow.com/questions/332602/…
标签: c# sql sql-server datatable conditional-statements