>>>是否可行?yes>>>有什么利弊?!you'd better write a Data Access layer to separate the concerns, the problems I can think of are:1. of course, more complexity, but also cleaner, and easy to change
2. extra files to maintain/deploy, and potentially can be tampered. Of course, you could also embed the text files in the resource assembly
3. consistency, extra testing
4. performance hit for initial loading, but you can cache the SQLs in Application or Cache variables
5. performance hit when you extract the right SQL for your current sql operation. You can cache each individual SQL statement separately, then again, more complexity
6. I suppose you are using OleDb classes, so you cannot utilize the optimized performance with SqlClient classes if you are using SQL Server

解决方案 »

  1.   

    思归大哥~~有些地方看不太明白,英语太差凑合着说,说错了别见怪第一个,您的意思是说,我如果这样做,更简单更方便吗?第二个,我准备把xml独立存放,以便以后更换之用?第三个,是叫我做好测试吗?第四个,我在程序启动之时就读取XML文件并做成一个hashtable放到cache中,不就可以了吗?每次我获取这个cache的时候都做检查,如果cache里没有这个hashtabel了我就重新获取第五个,实在看不懂了第六个,不不不,我的数据层已经做好了的,或者改天发个代码给您看看,帮我修正修正可以吗?大概的意思是这样的,我在数据层,返回的格式完全和数据连接无关的(全是一些string、datarow、datatable、dataset、hashtable、arraylist),也就是说,我针对每个数据库做不同的数据层,而和数据层的操作,完全封装了的,在逻辑层,连SqlClient或者OleDb这样的名字空间都不需要使用就可以了的,因为返回的数据格式全部是和数据库无关的
      

  2.   

    我的本意是每次你获取SQL,会影响效率,但你既然准备从HASHTABLE里获取,那也无所谓。但其实你应该写个SQL类,返回你需要的SQL语句但总的说来,这比原来的方案复杂了,你需要花额外的时间测试
      

  3.   

    呵呵,原来如此,思归大哥来了,就麻烦您帮我看看其他几个问题吧,头大呀我准备的是在程序一开始就把SQL语句从XML中装载到HASHTABLE中去,在把这个hsahtable放到缓存里,应该没问题吧?复杂了?怎么说呢?我觉得应该是简单了呀,以后换数据库,只需要换数据访问层为相关数据库支持的版本,再更换XML文件就可以了呀?以前的话,还得重写逻辑层?存储过程又不能用,ACCESS不支持
      

  4.   

    >>>>第一个,您的意思是说,我如果这样做,更简单更方便吗?yes>>>>第二个,我准备把xml独立存放,以便以后更换之用?fine>>>>第三个,是叫我做好测试吗?of course>>>>第四个,我在程序启动之时就读取XML文件并做成一个hashtable放到cache中,不就可以了吗?每次我获取这个cache的时候都做检查,如果cache里没有这个hashtabel了我就重新获取sounds ok, but like I said, you'd better abstract all these inside a class