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,但它创造了一个混乱添加吨\.
那么你的更新查询缺少字段之间的逗号,但这只是一个大冰山的一角
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的问题,解析值中的单引号以及由于未处理连接而泄漏系统资源.