更新mdb数据库表
问题描述:
我正在使用.NET Web Forms和.mdb
数据库构建一个简单的网站作为数据源。更新mdb数据库表
问题是:我有一个工作的backsite低谷,我可以创建,修改和删除一个新页面。
虽然我可以创建和删除,但编辑功能不起作用。
我意识到问题可能出现在查询中,因为代码对于其他功能来说工作正常。
下面是该查询:
UPDATE pages
SET title=\"" + pa.title + "\" content =\"" + pa.content + "\"
WHERE id=" + pa.id
我不是很喜欢SQL的,我做错了什么?
谢谢您提前
编辑N°2。目前,查询不能正常工作,基本上,一些内容和标题中有撇号,当我更新该特定页面时,它不会更新。我尝试使用Regex.Escape,但它创造了一大堆\添加。
答
嗯,你的更新查询缺少字段之间用逗号,但这只是一个大冰山
UPDATE pages SET title=" + pa.title + ", content =" + pa.content + " WHERE id=" + pa.id
你这样写的查询被暴露在大的安全问题的一角。这就是所谓的Sql Injection
我将展示一个伪代码,因为我没有你的实际代码
string queryText = "UPDATE pages SET [email protected], [email protected] WHERE [email protected]"
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注入问题工作的样本,单引号的解析你的价值观里由于连接未处理而泄露系统资源。
答
@"UPDATE pages
SET title= '" + pa.title + @"',
content = '" + pa.content + @"'
WHERE id= " + pa.id
谢谢你的帮助,我要尽快重写代码和学习SQL注入。 – Fonzusys 2013-04-09 15:59:43