日期:2014-05-18  浏览次数:21010 次

DAL中Sql语句作为常量好吗?
用三层开发,发现DAL中sql语句都是写在方法中的,那调用每次调用DAL的方法不每次都得实例化SQL语句,如果作为把sql语句作为常量好吗?大家是如何做的呢?

------解决方案--------------------
没写过SQL呢
正准备学习呢


------解决方案--------------------
petshop 里面不是就是把SQL语句用const的么.
------解决方案--------------------
SQL语句还要实例化?


------解决方案--------------------
DAL封装不就是为了业务逻辑的灵活性吗?虽然常量效率会比较高,但是如果失去灵活性,那就没什么意义了!个人见解。
------解决方案--------------------
有些时候 当我们功底还很弱的时候 我们大部分时候不会很好的去考虑用啥修饰符去修饰 但是还是得去思考的 或许现在做的不好 但是以后会好的.
------解决方案--------------------
你可以用StringBuilder
/// <summary>
/// 按条件删除 
/// </summary>
public bool DeleteByWhereString(string WhereString)
{

StringBuilder strSql=new StringBuilder();
strSql.Append("delete from Materials ");
if (WhereString != "")
strSql.Append(" Where " + WhereString );
int rows=DbHelperSQL.ExecuteSql(strSql.ToString());
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
------解决方案--------------------
把sql写成常量,能够复用,但是sql复用少的话,写在那里感觉没有什么区别。
------解决方案--------------------
又开始纠结性能了
循环1000000次



------解决方案--------------------
反正我们公司就是这么做的,以前也做过项目把SQL全部放进数据库作为存储过程调用,要不就是用O/R mapping框架
------解决方案--------------------
支持下。
------解决方案--------------------
是变量初始化吧。。。还sql实例化。。。
------解决方案--------------------
探讨

大家都不关心么?

------解决方案--------------------
你select 的sql,跟update的sql可以共用吗?。。。
------解决方案--------------------
sql语句实例化??那只是一串字符串而已。

Entity Framework飘过
------解决方案--------------------
探讨

sql语句实例化??那只是一串字符串而已。

Entity Framework飘过

------解决方案--------------------
探讨
用三层开发,发现DAL中sql语句都是写在方法中的,那调用每次调用DAL的方法不每次都得实例化SQL语句,如果作为把sql语句作为常量好吗?大家是如何做的呢?

------解决方案--------------------
不要一味地扯理论,一定要自己去多多做测试。
------解决方案--------------------
探讨

引用:

sql语句实例化??那只是一串字符串而已。

Entity Framework飘过


你太不注意性能问题了
字符串也是对象的
如果不做为常量
每次执行SQL时就会创建新的SQL字符串
性能啊
性能啊

------解决方案--------------------
上Entity Framework,哈哈
------解决方案--------------------
探讨
用三层开发,发现DAL中sql语句都是写在方法中的,那调用每次调用DAL的方法不每次都得实例化SQL语句,如果作为把sql语句作为常量好吗?大家是如何做的呢?

------解决方案--------------------
作为常理完全可以,但是对于有条件的查询或者有选择列(非所有列获取)的查询来说,你还是得提供可变SQL语句支持才行,常量的SQL语句只是给一般的获取使用。