我正在計數AUTHORIZED_USERS表中登錄的用戶ID存在的實例的數量。我正在查找的值位於UNAME字段中,它是一個包含以下格式的字符串:COMPANYNAME \ 111222333。如果該值存在於表中,則表示該用戶有權訪問該應用程序/視圖。否則,他們會被重定向到拒絕訪問頁面。下面我的代碼是接近的工作,但提供了以下錯誤對條件的計數值
Incorrect syntax near '\601011307'.
\ 601011307爲包含表UNAME領域的條目的一部分。它應該識別的全部價值是COMPANYNAME \ 601011307。
如何防止此錯誤並將計數值分配給變量,以便可以在條件中使用它?
public ActionResult HolidayDateTable()
{
string whoareyoupeople = User.Identity.Name.ToString();
DateTime date = DateTime.Now;
string myerrorstring = "User " + whoareyoupeople + " attempted unauthorized access on " + date + ".";
SqlConnection conn = new SqlConnection("Data Source=SWDB10DSQL;Initial Catalog=BillingUI;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");
conn.Open();
SqlCommand cmd = conn.CreateCommand();
{
cmd.CommandText = string.Format("SELECT COUNT(*) FROM AUTHORIZED_USERS WHERE UNAME = "+whoareyoupeople+")");
int count = (int)cmd.ExecuteScalar();
if (count == 0)
{
return RedirectToAction("AccessDenied");
}
else
{
return View(db.HOLIDAY_DATE_TABLE);
}
}
}
使用參數化查詢 – Steve 2014-09-30 21:18:43
我在連接字符串中看到實體框架。你真的在你的應用程序中使用EF嗎?如果是這樣,有一種更清潔的方式來做到這一點與LINQ – SnareChops 2014-09-30 21:18:59
如果你絕對不得不像這樣建立你的SQL,那麼你缺少用戶名參數周圍的引號。 – DavidG 2014-09-30 21:20:25