【发布时间】:2018-06-01 07:56:53
【问题描述】:
我需要你的帮助(眼睛)来看看我哪里错了。
所以,我遇到了这个错误...
这就是我正在做的......
一个登录的用户,有一个角色,它有或没有一些权限。
当他输入表单时,应用程序会根据他的角色检查用户权限。在这种情况下,它会检查导航权限并禁用不允许用户添加新数据的“添加新”按钮。
我必须说这个查询或类似的查询,在其他情况下工作得很好,并且编译成 SQL 查询,它正确返回值 0 或 1。
这是加载表单中的代码。
Extensions.UserInfo.ActiveButtons(Extensions.UserInfo.CurrentLoggedUser);
ActiveButtons 是一种基于登录用户禁用特定按钮的静态方法...
public static bool ActiveButtons(string user)
{
if (CanNavigate(CurrentLoggedUser) == true)
{
foreach (var button in Buttons)
{
if(button.Name == "novoToolStripMenuItem")
{
button.Visible = false;
}
else
{
button.Visible = true;
}
}
return true;
}
else
{
foreach (var button in Buttons)
{
button.Visible = false;
}
return false;
}
}
CanNavigate 方法检查角色表的权限。她的密码...
public static bool CanNavigate(string user)
{
bool result;
string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
string query = "SELECT tblRole.Navigate FROM tblRole INNER JOIN tblUser ON tblRole.RoleID = tblUser.RoleID WHERE tblUser.Username = @Username";
using (var con = new SqlConnection(query.ToString()))
{
using (var cmd = new SqlCommand(str, con))
{
con.Open();
cmd.Parameters.AddWithValue("@Username", user);
result = (bool)cmd.ExecuteScalar();
return result;
}
}
}
而且,你看到了吗,这个错误是在查询 SqlConnection 的这个方法中......
那么,有什么问题呢?
在调试时,用户正在获取正确的 CurrentLoggedUser!
谢谢。
【问题讨论】:
-
SqlConnection构造函数需要一个连接字符串,而不是 SQL 查询。你只需要交换str和query.ToString()。 -
您正试图将您的选择语句作为连接字符串...
-
SqlConnection的构造函数将连接字符串作为参数而不是 sql 查询,并且您正在那里传递SELECTsql 查询。这就是您收到此错误的原因。你应该在SqlConnection中传递str和在SqlCommand中传递query