當我現在有一個webconfig即有如下鍵和值<add key="AuthRoles" value="test1;test2;test3;test4" />
「必須聲明變量」。我目前有以下代碼。運行時,我收到以下錯誤Must declare the scalar variable "@roleId".
我正在運行我的C#代碼來查詢SQL數據庫
CODE
public bool IsUserAuthorized(string UserID)
{
bool isAuthed = false;
try
{
string _constring = System.Configuration.ConfigurationManager.ConnectionStrings["connectionDD"].ConnectionString;
string authorizedGroup = System.Configuration.ConfigurationManager.AppSettings["AuthRoles"].ToString();
string[] authGroup = authorizedGroup.Split(';');
using (SqlConnection con = new SqlConnection(_constring))
{
try
{
StringBuilder cmdTxt = new StringBuilder();
cmdTxt.Append("SELECT EmployeeID, RoleID, RoleDescription");
cmdTxt.Append(" FROM vstaffInfo");
cmdTxt.Append(" WHERE EmployeeID = @EmployeeId AND RoleId = @roleId");
SqlCommand cmd = new SqlCommand(cmdTxt.ToString(), con);
cmd.Parameters.AddWithValue("@EmployeeId", UserID);
for (int x = 0; x < authGroup.Length; x++)
{
cmd.Parameters.AddWithValue("@roleIdr", authGroup[x]);
if (authGroup.Length != x - 1)
{
cmdTxt.Append(" OR RoleId = ");
}
}
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
rdr.Close();
con.Close();
}
的SQL語句看起來像這樣
SELECT EmployeeID, RoleID, RoleDescription
FROM vEmployeeRoleInfo
WHERE EmployeeID = @EmployeeId
AND RoleId = test1
Or RoleId = test2
Or RoleId = test3
Or RoleId = test4
錯誤
Must declare the scalar variable "@roleId".
怎麼樣'IN'語句來代替? –
@Adam你不能真正使用'IN'參數。 – CodeCaster
@CodeCaster - 好點。 –