2015-07-13 113 views
0

我在c#中的項目爲用戶名和cookie記憶的單用戶身份驗證創建臨時表。使用cookie名稱創建更新表mysql創建

現在我需要更新該臨時表與MySQL的cookie的名稱創建,但我有此錯誤:

Compiler Error Message: CS1010: Newline in constant 

有什麼不對?

我的代碼如下。

private void UpdateProduct(string productID) 
{ 
    string sql = String.Format(@"Update `tbl_" + Request.Cookies["userName"].Value + "` 
           set Product = 1 
           where ID = {0}", 
            productID); 

    using (OdbcConnection cn = 
     new OdbcConnection(ConfigurationManager.ConnectionStrings["MySQL"].ConnectionString)) 
    { 
     cn.Open(); 
     using (OdbcCommand cmd = new OdbcCommand(sql, cn)) 
     { 
      cmd.ExecuteNonQuery(); 
     } 
    } 
} 

回答

0

"` 
set Product = 1 
where ID = {0}" 

部分仍需要逐字字符串中,因爲它是一個多字符串。改變它的樣子;

string sql = String.Format(@"Update `tbl_" + Request.Cookies["userName"].Value + @"` 
          set Product = 1 
          where ID = {0}", 
          productID); 

而且我不認爲你需要使用重音字符的表名,因爲它不是一個關鍵字或東西。

順便說一句,既然你把你的表作爲輸入,我強烈建議你在把它放入你的sql或創建一個白名單之前做一個強有力的驗證。但是,您應該始終使用parameterized queries。這種字符串連接對於SQL Injection攻擊是開放的。