【问题标题】:Is parameterisation needed in this instance?在这种情况下是否需要参数化?
【发布时间】:2017-01-20 18:19:17
【问题描述】:

我正在设计一个使用 SQLite 数据库存储其信息的 UWP 应用。从之前的研究中,我了解到使用 SQLite 函数 SQLiteConnection.Update()SQLiteConnetion.Insert() 函数是安全的,因为输入在进入数据库之前已经过清理。

我需要做的下一步是将该数据与在线数据库同步 - 在本例中为 SQL Server - 使用服务层作为我的过渡。鉴于数据先前已通过 SQLite 数据库插入进行了清理,在将对象值传递到我的 SQL Server 数据库之前,我是否仍需要使用服务层参数化对象值?

简单的假设是肯定的,因为尽管它们已被 SQLite 输入净化,但从技术上讲,它们仍然是原始字符串,如果在将它们发送到主数据库时未对其进行参数化,可能会对主数据库产生影响。

我是否应该简单地采用“如果有疑问,请参数化”的想法?

【问题讨论】:

  • 一句话:是的。甚至更好:不仅在您有疑问时,而且总是

标签: sql sql-server sqlite uwp


【解决方案1】:

我会说您应该始终使用 SQL 参数。您应该这样做有几个原因:

  • 安全性。
  • 性能。如果您使用参数,执行计划的重用可能会增加。详情请见article
  • 可靠性。如果您通过连接字符串来构建 SQL 命令,则总是更容易出错。

【讨论】:

  • +避免转换错误。另一种方法通常是强制将所有内容转换为字符串,然后强制数据库引擎将所有内容转换回自然数据类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
相关资源
最近更新 更多