本帖最后由 xzjjmaomao 于 2011-03-19 08:45:03 编辑

解决方案 »

  1.   

    但是根据网上的说法,在这里是不是就应该用存储过程了?也是就是写一个存储过程来做这个业务,如proIsFlag(flag,name,password),然后在方法里只要调用这个存储过程就可以?
    这样的话与前面的方法相比,只打开一次数据库连接,而且存储过程只需要一次编译,速度也还行?这个说法是正确的,你的程序和数据库的交互只是一次,然后的判断更新则在数据库中执行存储过程来解决。由于不需要把数据传回你的程序,所以速度上肯定会快。但存储过程只需要编译一次,并不是每次连接后使用都需要重新编译。 只要不修改存储过程的代码,那数据库系统就不会重新编译它。还有就是当大家在处理业务逻辑时,是大多用的存储过程实现呢,还是通过代码逻辑多次调用数据库不同表之间的查询方法实现呢?
    这个要看个人习惯和开发项目组的要求。
    各有优缺点。 用存储过程实现,显然程序上简单,速度上会快。
    但缺点也很明显,
    1)就是不同的数据库的存储过程的语言风格,显然不统一,当从SQL SERVER移植到ORACLE的时候你需要重写所有存储过程。
    2)开发一个项目,需要有人写数据库存储过程,有人写程序代码,毕竟找一个又懂ORACLE PL/SQL又写C#代码的毕竟比仅会写C#要难一些。
    3)设计的原则上,数据库应该仅起数据存储层的作用,不应该去参与业务逻辑层。