我想问个比较浅显的问题,就是在操作数据库的类中 大家一般都 是直接写sql语句的方法还是传对象的比如 insert( User user) 或是 insert(int id , string username,string pwd)insert(User user){ string sql="insert into user values("+user.id+","+user.name+","+user.pwd)";}insert(int id,string username,string pwd){string sql="insert into user values("+id+","+username+","+pwd+")";}有人说只 用第二种不用第一种 我也没弄明白为什么不传对象而要直接传数值类型那?这个是什么原因那?有人知道给指点下吧 谢谢 我是菜鸟

解决方案 »

  1.   

    另外如果是asp.net的话,拼接sql语句小心sql injection
      

  2.   

    呵呵,我喜欢第一种,我觉得当user增加属性的时候就方便了,在多层架构中修改的地方也少些,再说,大家也不是天天喊着面对对象嘛
      

  3.   

    我也想用第一种 在讨论的时候有人说第一种在以后会带来一些麻烦 我也没搞懂
    还有人建议用一个方法将第一种的传入的对象转成sql语句在传回来执行cmd.excute
    我现在就很晕这里为什么不用第一种啊 说第二种以后别人维护不好维护
      

  4.   

    直接使用sql语句的好处是简单明了。使用对象传值的好处是可以重复利用,但是当参数多的时候不好控制。
      

  5.   

    一般用 User 对象作参数,如果说它有什么不好的话,那就是它对象包含的属性比较多引起的一点点资源上的使用增加
      

  6.   

    可是用User的话这种方式那 这个层能做成框架为以后其它项目服务么?
      

  7.   

    第二种一般不会有问题,,第一种,, User 类型确定后,,在不同的机器上,有可能有不同的实现,, 所以,其长度可能是不定的..
    特别是加了长度对齐之后...
      

  8.   

    你说的长度指的是什么啊?
    我昨天在想是不是 如果User这个类变化了 那么对于sql操作来讲就得变化,而第二种就没有这种顾虑,但如果User变化了 那也就是说model层有变化,是不是数据库也变化了那?