【发布时间】:2011-01-26 20:57:31
【问题描述】:
大家好,有没有人有什么建议可以帮助解决以下问题?
我正在重写一些软件,这是我为我工作的原型所做的,我正在把它变成一个更符合 OOP 的程序 :)
我刚刚编写了一个自定义数据库处理程序类来处理我的连接、我的查询等。这个想法是这个数据库处理程序完成了处理数据库所需的一切,并且只返回正在运行的查询的结果集。
无论如何,我刚刚编写了一些方法来为我编写 SQL 查询 - 我的想法是我以数组的形式向它传递一些参数,然后该类编写查询所需的 SQL 字符串,从而消除 SQL 注入问题。
我的问题是;使用普通选择(使用 where 参数和 order/group by )以及插入和更新,这些都可以正常工作。但是,如果我想传递一个可能有连接的查询,或者一个多表连接或一个 where 子句,它在 where 上包含一个 like 或一个子选择(这可能通过运行 select 方法两次是可行的!)
我不知道如何获得产生这些查询的方法。有没有人有什么建议? - 可能必须在无法自己编写查询的情况下构建自定义的。
另一个想法是将事情复杂化,只执行一个调用来删除传递的字符串中包含的斜杠。
提前致谢,
无敌
顺便说一句,如果它没有多大意义,从今天早上 7 点开始编码,大脑正在慢慢死亡! :)T
【问题讨论】:
-
如果可能,不要自己动态生成 SQL。使用静态 SQL 或使用 ORM 为您生成 SQL。动态 SQL 很难正确执行。你很可能会犯错误。
标签: c# mysql visual-studio