更新mdb数据库表

gor*_*izu 1 .net c# sql ms-access

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

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

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

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

这是查询:

UPDATE pages 
SET title=\"" + pa.title + "\" content =\"" + pa.content + "\" 
WHERE id=" + pa.id
Run Code Online (Sandbox Code Playgroud)

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

先感谢您

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

Ste*_*eve 7

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

UPDATE pages SET title=" + pa.title + ", content =" + pa.content + " WHERE id=" + pa.id
Run Code Online (Sandbox Code Playgroud)

以这种方式编写的查询会遇到很大的安全问题.它被称为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();
}
Run Code Online (Sandbox Code Playgroud)

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

请参阅使用Statement的
参数化查询