我在c#中的项目为单用户身份验证创建了一个临时表,其中包含用户名和cookie记忆。
现在我需要用cookie名称更新这个临时表mysql create,但是我有这个错误:
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 :(得分: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攻击开放。