public int Add(Area model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into I_Base_Area(");
            strSql.Append("AreaName,AreaShortName,RootId,SpellCode,Flag,Re)");
            strSql.Append(" values (");
            strSql.Append("@AreaName,@AreaShortName,@RootId,@SpellCode,@Flag,@Re)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters = {
new SqlParameter("@AreaName", SqlDbType.VarChar,20),
new SqlParameter("@AreaShortName", SqlDbType.VarChar,20),
new SqlParameter("@RootId", SqlDbType.Int,4),
new SqlParameter("@SpellCode", SqlDbType.VarChar,20),
new SqlParameter("@Flag", SqlDbType.Int,4),
new SqlParameter("@Re", SqlDbType.Text)};
            parameters[0].Value = model.AreaName;
            parameters[1].Value = model.AreaShortName;
            parameters[2].Value = model.RootId;
            parameters[3].Value = model.SpellCode;
            parameters[4].Value = model.Flag;
            parameters[5].Value = model.Re;            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
            if (obj == null)
            {
                return 0;
            }
            else
            {
                return Convert.ToInt32(obj);
            }
        }

解决方案 »

  1.   

    没什么好的,太繁琐了吧 只不过一个命令字符串,不需要用StringBuilder吧,直接String就好;
    直接“+”更快一些,也更易读些
      

  2.   

    StringBuilder性能高些
    比直接insert ... value('++')要好
      

  3.   

    用参数可以避免很多问题, 比如SQL注入 ,特殊字符转义等
    建议你可以给你的entity自定义个attribute  然后通过一个共通的反射方法来帮你完成这些重复操作。
    否则字段多的大表你会很受伤~~~
      

  4.   

    一切正常,挺好
     StringBuilder strSql = new StringBuilder();
      strSql.Append("insert into I_Base_Area(");
      strSql.Append("AreaName,AreaShortName,RootId,SpellCode,Flag,Re)");
      strSql.Append(" values (");
      strSql.Append("@AreaName,@AreaShortName,@RootId,@SpellCode,@Flag,@Re)");
      strSql.Append(";select @@IDENTITY");
    改成string strSql = “”;即可,太罗嗦了。
      

  5.   

    推荐这种写法,如果直接写sql虽然简单,但是很多意外的情况将发生。例如单引号的问题,类型、长度问题等等都需要自己处理
      

  6.   

    挺好的,比直接写sql好,防止了sql非法的注入。+操作符的性能很差,而且占用内存,所有要用StringBuilder。
      

  7.   

    当然是这种写法好啊
    拼接字条串是以前asp的做法
      

  8.   

    这样的地方用StringBuilder就是脱裤子放屁
      

  9.   

    在性能上来说这样写是好的,但是这样的写法太不容易查看了,如果能保持SQL的缩进就好了,你可以用string 来写,在前面加@就可以了,这样可以保持格式,比如:
    string sql=@" SELECT * FROM 表名
                                          WHERE 条件=**** ";
      

  10.   

    做个封装 适应多种数据库 不用拼SQL的