当前位置: 首页 > 面试题库 >

更新MDB数据库表

夹谷星剑
2023-03-14
问题内容

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

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

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

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

这是查询:

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

请参见使用语句的
参数化查询




 类似资料:
  • 我想知道ehcache是否有办法检测数据库更新/插入(spring/java,hibernate web应用程序),并使用数据库中的当前(最新)数据刷新其缓存。如果没有,检测数据库更新的最佳方法是什么,以保持与缓存和数据库之间的数据同步?

  • 我在使用MS-Access数据库的C#表单应用程序中工作。我有一个数据库,其中有一个表,其中包含两列和。两列都是数据类型。 我得到的错误是 系统数据OleDb。OLEDBEException:UPDATE语句中的语法错误。 在系统。数据。OleDb。OleDbCommand。系统中的执行命令文本错误处理(OleDbHResult hr) 。数据。OleDb。OleDbCommand。执行命令文本F

  • 问题内容: 我正在使用()查找PostLikes表中的(PostId,UserId),如果找到该行,则用于生成delete指令并删除基础行,如果未找到该行,则用于生成insert命令并使用将该行插入表中。但是该行未插入数据库中的表中。这是我到目前为止所做的 和表 PostLikes(LikeId,PostId,UserId) 问题答案: 有几个问题: 您正在寻找重复使用相同的命令,这两个检测行是否

  • 我目前正在重构遗留代码,以使用Android架构组件,并在一种存储库模式中设置一个房间数据库和截取请求。因此,表示层/域层要求存储库获取LiveData对象进行观察,或告诉他与服务器同步,然后删除旧的db条目,并从服务器中重新提取所有当前条目。 我已经写了同步部分的测试,所以我确信,对象被正确地获取并插入到数据库中。但是当写一个测试来观察db表的条目时(并测试对象是否被正确保存,以及在将它们放入d

  • 全部的 只是想看看用表单中提交的数据更新数据库行的最佳选项是什么。我理解Laravel更新查询生成器,但是我在如何获取表单数据,然后执行该查询方面遇到了困难。相对较新的Laravel:)这是我想出的,只是从我的PHP经验和逻辑: 我曾试图将查询放入一个函数中,然后让表单操作成为函数: 正如我所说,主要问题是试图让命名的表单对象成为更新行的对象。我有两个文本输入字段,分别命名为“body”和“not

  • 我有一个PHP laravel projekt,我需要添加一个字段到一个/多个模型(雄辩)。我在php方面没有太多的经验,以前从未尝试过laravel。 现在这个班看起来像这样 我想添加一个名为“level”的字符串字段,但我不知道如何操作。如果我先在MySQL中创建字段,然后更新模型,如果我更新模型,然后Laravel为我更新MySQL? 我期待着听到我能做什么:)