如何解决拼接“SQL字符串”的烦恼

starryit 2012-03-05 04:44:04
在查询的时候,发现很多现在的项目的框架都存在“拼接SQL字符串”的现象。最常见的就是生成“报表和图表”的时候,根据不同的条件“拼接Sql语句”,能拼接到几张A4纸那么长。

个人认为,如此“拼接Sql”字符串,不好调试,而且费时费力。有没有什么好的方法,可以避免拼接“Sql字符串”,解决这个烦恼???

比如使用:“Linq to Sql”可以吗???
主要是因为涉及到“Silverlight”在“Asp.net”项目中的使用,要用到“RIA WCF Service”。
...全文
8506 75 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
程晨c 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

ADO.NET支持你可以传递参数对象给SQL(也就是所谓参数化SQL)来代替拼接SQL这种不安全的做法。这是最最基本和基础的知识,如果你系统学习下都应该知道。你不踏踏实实学习,整天在论坛道听途说一些新名词,只是让问题更复杂。
[/Quote]
赞同!
程晨c 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 70 楼 的回复:]

说句老实话,这个问题我看过后比较纠结,正如32楼所说:
由于数据量比较大,所以还有点担心“EF”的效率。
数据量比较大 用access ?
还担心ef效率?
所以说哥们,在开发之前,你需要考虑的并不是说使用什么技术,而是什么工具,access这个数据库我没用过,但据我了解这个数据库应该是一个很小的数据库,存储量好像是10万级的样子,数据量比较大你还用这个。其次,你不要去追求一些新的东西,……
[/Quote]

拼接sql并不过时,也不复杂,相反,用一些不太好的框架来处理sql语句,反而使得调试、修改、维护都很麻烦!
程晨c 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 70 楼 的回复:]

说句老实话,这个问题我看过后比较纠结,正如32楼所说:
由于数据量比较大,所以还有点担心“EF”的效率。
数据量比较大 用access ?
还担心ef效率?
所以说哥们,在开发之前,你需要考虑的并不是说使用什么技术,而是什么工具,access这个数据库我没用过,但据我了解这个数据库应该是一个很小的数据库,存储量好像是10万级的样子,数据量比较大你还用这个。其次,你不要去追求一些新的东西,……
[/Quote]

ACces是10万级的数据库?
你单表保存10000万条数据试试?照样正常使用,常用操作也不是很慢!
krenyelang 2012-03-19
  • 打赏
  • 举报
回复
说得都很在理!
学习!
xiaoyi5520 2012-03-19
  • 打赏
  • 举报
回复
看的头都晕了!呵呵
wanghailin6250 2012-03-19
  • 打赏
  • 举报
回复
说句老实话,这个问题我看过后比较纠结,正如32楼所说:
由于数据量比较大,所以还有点担心“EF”的效率。
数据量比较大 用access ?
还担心ef效率?

所以说哥们,在开发之前,你需要考虑的并不是说使用什么技术,而是什么工具,access这个数据库我没用过,但据我了解这个数据库应该是一个很小的数据库,存储量好像是10万级的样子,数据量比较大你还用这个。其次,你不要去追求一些新的东西,开发 我个人建议使用最熟悉的为好,新东西可以学,学好了可以用。但是不建议边学边用,应为在你学习的过程中就使用的话,不得不说你对于这门技术的水平是菜鸟级,用的时候可能走了更多的弯路。效率可能比使用你最熟悉的技术开发还要差。
回到正题 拼接sql问题 我个人并不认为拼接sql过时了,也不认为拼接sql很烦,你先把要拼接的情况罗列出来,在按照这个去拼接,这个并不是很难。调试也好办,一个拼接点设个断点,一句一句往下看就是。再者,存储过程其实和拼sql一个样,都可以一句一句的测试,至少oracle里面就有一个测试的功能。点过程名右键就能看到,个人建议使用存储,这样效率好一点。
starrycheng 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 wangcs_1986 的回复:]

类型化的DataSet
[/Quote]

什么叫做类型化“DataSet”???
wangcs 2012-03-18
  • 打赏
  • 举报
回复
类型化的DataSet
wangcs 2012-03-18
  • 打赏
  • 举报
回复
类型化DataSet怎么样啊~我刚学的~
chensheng021 2012-03-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 caozhy 的回复:]
ADO.NET支持你可以传递参数对象给SQL(也就是所谓参数化SQL)来代替拼接SQL这种不安全的做法。这是最最基本和基础的知识,如果你系统学习下都应该知道。你不踏踏实实学习,整天在论坛道听途说一些新名词,只是让问题更复杂。
[/Quote]
支持!!!
jimzhao 2012-03-18
  • 打赏
  • 举报
回复
从要查询的表、字段、条件都是不固定,如何能不拼接SQL?
yp19910928 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 maco_wang 的回复:]

用存储过程参数化也不需要拼接。

用LINQ to SQL也是可以的,还是很多框架都可以避免SQL拼接。
[/Quote]学习下
lyb520320 2012-03-16
  • 打赏
  • 举报
回复
拼完后使用日志debug输出一下不就可以了
苏州牛恋歌 2012-03-16
  • 打赏
  • 举报
回复
数据量大 还用access
vansoft 2012-03-16
  • 打赏
  • 举报
回复
拼接?

新手吧?
cheng2005 2012-03-16
  • 打赏
  • 举报
回复
ORM
拼命三朗 2012-03-16
  • 打赏
  • 举报
回复
中易企业管理系统开发平台
拼命三朗 2012-03-16
  • 打赏
  • 举报
回复
EasyDesigner(中易企业管理系统开发平台),再也不用写sql语句了,根据模板自动生成,不多说了,自己看吧,我是做这个平台的,没时间介绍
starrycheng 2012-03-15
  • 打赏
  • 举报
回复
拼接Sql字符串对报表而言还是比较好的。
coolyylu 2012-03-15
  • 打赏
  • 举报
回复
local zsql
text to zsql textmerge noshow
select a.* from order_detail a
inner join stock b on b.stock = a.stock
where a.order_date >= '<<date()>>'
endtext

用文本合併的方式不是很好,很自然.
加载更多回复(49)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧