sqlHelper.ExecNonQuery( sql,QueryCondition condition);怎么编写这个方法呢
entity是实体,例如设置实体的属性后,进行插入操作,调用这个方法。执行Sql语句,怎么编写这个执行Sql的语句的方法呢
public void Insert(Engine entity)
{
string sql = @"
INSERT INTO Engine (Id, Code, Name)
VALUES (@Id, @Code, @Name)"; sqlHelper.ExecNonQuery(sql, Entity2Condition(entity));
}
private QueryCondition Entity2Condition(Engine entity)
{
QueryCondition condition = new QueryCondition(); condition.Parameters.Add(new Parameter("Id", DbType.Guid, entity.Id));
condition.Parameters.Add(new Parameter("Code", DbType.AnsiString, entity.Code));
condition.Parameters.Add(new Parameter("Name", DbType.String, entity.Name));
}
sqlHelper.ExecNonQuery( sql,QueryCondition condition){};求这个方法怎么写

解决方案 »

  1.   

    public void Insert(Engine entity)
    {
    string sql = @"
    INSERT INTO Engine (Id, Code, Name)
    VALUES (@Id, @Code, @Name)";sqlHelper.ExecNonQuery(sql, Entity2Condition(entity));
    }
    private QueryCondition Entity2Condition(Engine entity)
    {
    QueryCondition condition = new QueryCondition();condition.Parameters.Add(new Parameter("Id", DbType.Guid, entity.Id));
    condition.Parameters.Add(new Parameter("Code", DbType.AnsiString, entity.Code));
    condition.Parameters.Add(new Parameter("Name", DbType.String, entity.Name));return condition ;sqlHelper.ExecNonQuery( sql,QueryCondition condition){
     using (SqlConnection conn=new SqlConnection("连接字符串"))
                {
                    using (SqlCommand cmd=new SqlCommand())
                    {
                        cmd.Connection = conn;
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(condition。Parameters);
                        conn.Open();
                        int num = cmd.ExecuteNonQuery();
                       
                        conn.Close();                    return num;
                    }
                }
            标准(我的标准)的这个方法是: public int ExecuteCommand(string sql, SqlParameter[] sp)
            {
                using (SqlConnection conn=new SqlConnection("连接字符串"))
                {
                    using (SqlCommand cmd=new SqlCommand())
                    {
                        cmd.Connection = conn;
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(sp);
                        conn.Open();
                        int num = cmd.ExecuteNonQuery();
                       
                        conn.Close();                    return num;
                    }
                }
            
            }}
    }
      

  2.   

     
    //返回的是受影响的行数
    public int ExecuteCommand(string sql, SqlParameter[] sp)
      

  3.   

    public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
    {
        SqlCommand command = new SqlCommand();
        PrepareCommand(command, connection, null, commandType, commandText, commandParameters);
        int num = command.ExecuteNonQuery();
        command.Parameters.Clear();
        return num;

      

  4.   

    public void Insert(Engine entity)
    {
    string sql = @"
    INSERT INTO Engine (Id, Code, Name)
    VALUES (@Id, @Code, @Name)";sqlHelper.ExecNonQuery(sql, Entity2Condition(entity));
    }
    private QueryCondition Entity2Condition(Engine entity)
    {
    QueryCondition condition = new QueryCondition();condition.Parameters.Add(new Parameter("Id", DbType.Guid, entity.Id));
    condition.Parameters.Add(new Parameter("Code", DbType.AnsiString, entity.Code));
    condition.Parameters.Add(new Parameter("Name", DbType.String, entity.Name));return condition;
    }sqlHelper.ExecNonQuery( sql,QueryCondition condition){
     using (SqlConnection conn=new SqlConnection("连接字符串"))
      {
      using (SqlCommand cmd=new SqlCommand())
      {
      cmd.Connection = conn;
      cmd.CommandText = sql;
      cmd.Parameters.AddRange(condition。Parameters);
      conn.Open();
      int num = cmd.ExecuteNonQuery();
        
      conn.Close();  return num;
      }
      }

    }
        
      

  5.   

    public int Insert(Engine entity)
    {
    string sql = @"INSERT INTO Engine (Id, Code, Name)VALUES (@Id, @Code, @Name)";
    SqlParameter[] param= { new Sqlparamter("@Id", entitry.id),
                            new Sqlparamter("@Code", entitry.Code),
      new Sqlparamter("@Name", entitry.Name)
    };
    return ExecuteNonQuery(connection,CommandType.Text,sql,param);}
      

  6.   

    楼主你连sqlHelper是什么都没搞清楚吧,那个是自己写的一个数据库帮助类,类本身的定义都没贴出来,就来问这个方法怎么使用,你让别人怎么猜?
    如果你是要讨一个可用的sqlHelper,那么也不是这样的提问方法。如果是问别人写的sqlHelper怎么用,那么至少要贴出他写的类定义才行。
    我们都有自己的sqlHelper类,结合自己的实际情况,将数据库底层操作包装下,让使用的时候更加方便,如果你连数据库基本操作的C#写法都不会,要看懂别人写的sqlHelper是不可能的,用的时候出现问题就更加不知所以然了。
      

  7.   

    大哥,难道我不知道sqlhelper是自己编写的,我是问那个方法怎么写,我定义了个空白类,你叫我贴什么出来
      

  8.   

    一般来说DBhelper等类都是写数据交互的技术人员写的各种方法。。有简单的获取ds和一些存储过程调用的方法。。如果楼主要了解这个类怎么写可以参考database网上很多的。。跟各种数据存储工具的方法都有。。而且方法一应俱全 这个类是项目开发跟数据交互的最基本类
      

  9.   

     public   class QueryCondition
        {
           private List<Parameter> parameters = new List<Parameter>();
           private List<Expression> expressions = new List<Expression>();
           public List<Parameter> Parameters
           {
               get { return this.parameters; }
           }
           public List<Expression> Expressions
           {
               get { return this.expressions; }
           }我的Querycondtion是这么写的,       cmd.Parameters.AddRange(condition.Parameters);这句话不对吧
      

  10.   

    是这样啊,那你可以去这里看看:http://code.google.com/p/dapper-dot-net/
    它的效率是最快的,非常适合你的需求。
    我在它的基础上还修正了一些BUG,扩展了数据类型转换功能,不过只针对.NET4.0做的修改,你要需要的话,单独发你邮箱。
      

  11.   

    cmd.Parameters.AddRange(condition.Parameters);接收的是数组类型,你看看你那个是什么类型的,不行转换一下(.ToArray())
      

  12.   

    这个是我以前写的一个小系统里面的代码
    学生类,里面有两个属性,stunum(学号)和name(姓名)
    数据库用的是ms sql2000,我用spgen生成的存储过程,所以没有写sql语句。
            public bool Insert()
            {
                SqlParameter[] parameters = new SqlParameter[]
    {
    new SqlParameter("stunum",stunum),
    new SqlParameter("name",name)
    };            SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.StoredProcedure, "stuinfo_Insert", parameters);
            }
      

  13.   

    建议可以用petshop的底层,或者用代码生成器生成底层。
      

  14.   

    现在都用sqlhelper啊 谁用这个
      

  15.   

    官方有一个效率很高的SqlHelper   DLL文件的!
      

  16.   

    改用LINQ,全是模板化的东西,无脑搞定
      

  17.   

    ado.net ExecuteNonQuery 是sqlcommand中的方法,sqlcommand的创建需要sqlconnect
      

  18.   

    现成的东西很多了!操作数据库不就那几个步骤吗!如果那几个你都会了!就看看Castle、Nhibernate或者企业库。这样的都是已经封装好了的!用起来也更顺手