我要做的是获取当前登录用户的用户名,并将其与包含用户的数据库进行比较,还包括一个活动标志和一个管理员标志。我想比较 tbl_Person 表中的当前登录用户和表中他们各自的用户,看看他们是否被标记为活动和管理员。如果两者都是真的,他们可以访问管理页面。到目前为止,我有以下内容不起作用。有些我知道为什么,有些我不知道。我认为我走在正确的轨道上,话虽这么说,但我确信我做得不对。我知道您使用 ExecuteScalar() 在查询字符串中与 OUTPUT 一起返回某些内容,但无法使其正常工作。另一个明显的问题是,当用户名是字符串并且活动和管理标志是布尔值时,我试图返回整数。我知道我只有 Active 在那一刻。在添加其他内容之前,我试图让它发挥作用。
我用 ExecuteScalar 读到了,你可以解析和转换 ToString,但这不起作用,我发现证据表明这可能不是正确的做法,但我真的不确定。
我有几个不同的错误。当我尝试执行 OUTPUT 时,输入错误,无效列。使用 OUTPUT,我只尝试了 OUTPUT,因为我知道插入后返回时,您会使用 insert.name。我凭直觉尝试了 selected.name ,但这没有用。
我在想,如果我提取信息,将它们连接起来然后进行比较,这会做我想要的,但我愿意接受其他建议。谢谢。
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["HSEProjRegConnectionString1"].ConnectionString);
conn.Open();
SqlCommand sqlUserName = new SqlCommand("SELECT [username] FROM [tbl_Person]", conn);
SqlCommand sqlActive = new SqlCommand("SELECT [active] FROM [tbl_Person]", conn);
int result1 = ((int)sqlUserName.ExecuteScalar());
int result2 = ((int)sqlActive.ExecuteScalar());
string userInfo = result1 + "." +result2;
string userName = userName + "." +result2;
if (userInfo == userName)
{
Woo, you have access.
}
else
{
Sorry, but no.
}
查询也不是最终的。一旦它工作,我会将其更改为参数化查询。