我正在使用.NET Web Forms和.mdb
数据库作为数据源构建一个简单的站点。
问题是:我有一个工作后台,我可以创建,修改和删除新页面。
虽然我可以创建和删除,但编辑功能不起作用。
我意识到问题可能出在查询中,因为代码对其他功能工作正常。
以下是查询:
UPDATE pages
SET title=\"" + pa.title + "\" content =\"" + pa.content + "\"
WHERE id=" + pa.id
我不是很喜欢SQL,我做错了吗?
提前谢谢
编辑N°2。目前,查询工作不正常,基本上,一些内容和标题中包含撇号,当我更新该特定页面时,它不会更新。我尝试使用Regex.Escape,但它创造了一个混乱添加吨\。
答案 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的问题,解析值中的单引号以及由于未处理连接而泄漏系统资源。
答案 1 :(得分:0)
@"UPDATE pages
SET title= '" + pa.title + @"',
content = '" + pa.content + @"'
WHERE id= " + pa.id