到目前为止,这是我的代码:
private void loginbtn_Click(object sender, EventArgs e)
{
CRUD.cmd = new NpgsqlCommand("SELECT COUNT(*) FROM users WHERE username = '" + txtuser.Text + "' AND password = '" + txtpass.Text + "'", CRUD.con);
NpgsqlDataAdapter da = new NpgsqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = CRUD.cmd;
da.Fill(dt);
if (dt.Rows[0][0].ToString() == "1")
{
Welcome welcome = new Welcome();
welcome.Show();
this.Hide();
}
else
{
MessageBox.Show("Username or password incorrect, try again.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtpass.Clear();
txtuser.Clear();
txtuser.Focus();
}
if (RememberMe.Checked)
{
Properties.Settings.Default.UserName = txtuser.Text;
Properties.Settings.Default.Password = txtpass.Text;
Properties.Settings.Default.Save();
}
}我知道我应该使用SQL参数,但这是一个安全的本地环境。我的问题是,如何检索当前登录的哪个用户的信息?我需要它,所以当用户向SQL表插入方法时,我想知道是哪个用户做了这个条目,或者是哪个用户删除了它。还可以将用户信息与INSERT方法的其余部分一起添加到另外两个列(用户ID和PASS)。
编辑:
这里我有一个带有datagridview (DGV)的小窗口窗体应用程序和几个文本字段,可以用一个按钮将值插入到表中,然后将该信息显示给DGV,并具有删除行的能力。我制作了Form2,所以用户必须在访问Form1 (DGV )之前登录。我所要做的就是以某种方式保存用户信息,每当他更改DGV时,将他的凭据添加到表中他所做条目旁边的两个额外列中。
发布于 2020-12-15 15:53:48
知道谁登录了
是谁登录到windows机器?
如果你指的是谁登录到例如。在Windows机器上,您可以使用类似于Environment.UserName的东西。
自定义解决方案/数据库
如果您自己的解决方案/数据库要“登录”,则需要添加此功能。它通常是在自己的服务器上使用著名的库完成的,而不是“手工编写的”,但是对于测试项目的粗糙/不安全的示例,您可以使用Properties.Settings,例如:
/* "Logging in" */
if (password == databaseUser.Password) {
Properties.Settings.Default.myLoggedInUserId = databaseUser.Id;
Properties.Settings.Default.myLoggedInUserName = databaseUser.Name;
}
/* "Logging out" */
Properties.Settings.Default.myLoggedInUserId = null;
Properties.Settings.Default.myLoggedInUserName = null;哪个用户创建/编辑了一行
这通常是通过向表中添加附加字段来实现的,例如。CreatedDate和CreatedBy
var sqlText = "INSERT INTO MyTableName(Name, CreationDate, CreatedBy) VALUES (@Name, @CreatedDate, @CreatedBy);";
var command = new SqlCommand(sqlText, connection);
command.Parameters.Add("@Name", name);
command.Parameters.Add("@CreatedDate", DateTime.UtcNow);
command.Parameters.Add("@CreatedBy", myLoggedInUserName);对于谁编辑了一行,请考虑“修改日期”和“被修改”列。
谁删除了一排
要做到这一点,可以采取以下办法:
在操作成功后,
INSERT插入另一个表(听起来您已经做到了)从用户中删除UserId = @UserId;插入MyLoggingTable(LogMessage,LoggedInUserId)值(@Message,LoggedInUserId)
DELETE删除,例如users.Active:-列出所有活动用户选择*来自users.Active =1的用户;-删除设置为active =0的用户更新用户设置为UserId = @UserId;-谁删除了用户(假设您无法编辑已删除的用户)从users.UserId = @Id;的用户中选择users.ModifiedBy
https://stackoverflow.com/questions/65301570
复制相似问题