更新mdb数据库表

时间:2013-04-09 15:44:07

标签: c# .net sql ms-access

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

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

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

我意识到问题可能出在查询中,因为代码对其他功能工作正常。

以下是查询:

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

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

提前谢谢

编辑N°2。目前,查询工作不正常,基本上,一些内容和标题中包含撇号,当我更新该特定页面时,它不会更新。我尝试使用Regex.Escape,但它创造了一个混乱添加吨\。

2 个答案:

答案 0 :(得分:7)

你的更新查询缺少字段之间的逗号,但这只是一个大冰山的一角

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

以这种方式编写的查询会遇到很大的安全问题。它被称为Sql Injection

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

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 Injection的问题,解析值中的单引号以及由于未处理连接而泄漏系统资源。

请参阅
     Parametrized Queries
     Using Statement

答案 1 :(得分:0)

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