1

我正在使用 .NET Web 窗体和.mdb数据库作为数据源构建一个简单的站点。

问题是:我有一个工作后台槽,我可以创建、修改和删除一个新页面。

虽然我可以创建和删除,但编辑功能不起作用。

我意识到问题可能出在查询中,因为代码在其他功能上运行良好。

这是查询:

UPDATE pages 
SET title=\"" + pa.title + "\" content =\"" + pa.content + "\" 
WHERE id=" + pa.id

我不是很喜欢 SQL,是我做错了什么吗?

先感谢您

编辑 N°2。目前,查询无法正常工作,基本上,某些内容和标题中有撇号,当我更新该特定页面时,它不会更新。我尝试使用 Regex.Escape 但添加大量 \ 会造成混乱。

4

2 回答 2

7

好吧,您的更新查询在字段之间缺少逗号,但这只是冰山一角

UPDATE pages SET title=" + pa.title + ", content =" + pa.content + " WHERE id=" + pa.id

您以这种方式编写的查询会面临很大的安全问题。它被称为Sql 注入

我将显示一个伪代码,因为我没有您的实际代码示例

string queryText = "UPDATE pages SET title=@title, content=@content WHERE id=@id"

using(SqlConnection cn = new SqlConnection(connection_string))
using(SqlCommand cmd = new SqlCommand(queryText, cn)
{
    cmd.Parameters.AddWithValue("@title", pa.title);
    cmd.Parameters.AddWithValue("@content", pa.content);
    cmd.Parameters.AddWithValue("@id", pa.id);
    cmd.ExecuteNonQuery();
}

以这种方式工作,您可以避免 Sql 注入、解析值中的单引号以及由于未处理连接而导致系统资源泄漏的问题。

请参阅使用语句
的参数化查询

于 2013-04-09T15:49:33.717 回答
0
@"UPDATE pages 
  SET title= '" + pa.title + @"', 
      content = '" + pa.content + @"' 
  WHERE id= " + pa.id
于 2013-04-09T15:52:33.157 回答