【发布时间】:2016-11-30 03:24:33
【问题描述】:
我的用户使用用户名和密码登录,如果他存在,我会检查数据库。
我想在连接后从连接的用户那里获取 UserID 并将其放入一个变量中,以便稍后在我的程序中使用。
我的表用户和我的两个函数。我没有添加所有代码,因为我认为没有必要。
+-----------------------------------------+
| User |
+------------+------------+---------------+
| UserID | Username | password |
| 1 | abc | def |
| 2 | ghi | jkl |
+------------+------------+---------------+
public int Login(string Username, string Password)
{
try
{
clsDataSource.mycon = new OleDbConnection(@"Provider=...");
OleDbCommand cmd = new OleDbCommand("Select * from Users where email=@email and pwd=@pwd", clsDataSource.mycon);
cmd.Parameters.AddWithValue("@email",Username);
cmd.Parameters.AddWithValue("@pwd",Password);
clsDataSource.mycon.Open();
dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
clsDataSource.mycon.Close();
//code to login
return 0;
}
catch (Exception ex)
{
throw ex;
}
}
private void button1_Click(object sender, EventArgs e)
{
//code to check the login
}
【问题讨论】:
-
不确定你想要什么。你能解释一下 store in variable 是什么意思吗?因为这取决于您将使用该值的内容和位置。
-
你的意思是你想添加一个全局变量来检查变量而不是连接数据库进行验证?
-
对不起,连接后我想从连接的用户那里获取用户ID,以便能够在其他地方使用它。在另一种形式中,我需要在需要 UserID 的表中更新我的数据库
-
无意冒犯,但代码一团糟。 1)您应该使用配置文件来存储连接字符串。 2)密码不应在后端数据库中以明文形式保存。 3) 应该以一种或另一种方式处置实现 IDisposable 的类。 4) 发现错误并立即抛出它有什么意义?而这样的例子不胜枚举。无论如何,为什么要填充 DataTable?为什么不直接从 DataReader 中获取信息?顺便说一句,您可以将信息存储在成员字段中,以便以后在同一类的其他功能上使用。