在c#中如如果要使用多条SQL语句,有没有什么好的方法呢。我都是用STRING.FORMAT()。然后ExecuteNonQuery()。
   单条的话还好,多条的发好像很麻烦呢,不知道各位高手有没有什么好方法呢。

解决方案 »

  1.   

    多条SQL语句的话,使用TransactionScope来操作
      

  2.   

    使用字符串数组,数组的每个元素是一条SQL语句。
    遍历数组元素,对每条语句执行ExecuteNonQuery()。
      

  3.   

    函数调用   
    类似
    void data(string sql)
    {
    }
      

  4.   

    用事务啊.
    sqltransaction或者存储过程来执行事务.
      

  5.   

    专业角度来说,一般所有涉及数据库的操作全都封装成 SP,然后 C# 调用 SP 更新数据库。有些业务逻辑很复杂,N 个操作必须原子的封装在一起,所以需要封装在一个 SP 里面,C# 负责调用。如果写 SQL,基本是一件相当繁琐复杂的任务。而且不易于维护。
      

  6.   

    List<string>放多条sql语句,
    这里有多条sql执行的方法。写存储过程也行。不过存储过程自己写
    c#使用存储过程
      

  7.   

    #region 带事务操作数据库
            /// <summary>
            /// 带事务的批量操作数据。
            /// </summary>
            /// <param name="sqlInsert">SQL</param>
            /// <returns>操作是否成功</returns>
            public static bool OperateDatasWithTransaction(List<string> sqlList)
            {
                OracleConnection myConnection = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStrOrcl"]);
                myConnection.Open();
                OracleCommand myCommand = myConnection.CreateCommand();
                OracleTransaction myTrans;
                // Start a local transaction
                myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted);
                // Assign transaction object for a pending local transaction
                myCommand.Connection = myConnection;
                myCommand.Transaction = myTrans;
                try
                {
                    foreach (string item in sqlList)
                    {
                        myCommand.CommandText = item;
                        myCommand.ExecuteNonQuery();
                    }
                    myTrans.Commit();
                    return true;
                }
                catch (Exception)
                {
                    myTrans.Rollback();
                    return false;
                }
                finally
                {
                    myConnection.Close();
                }
            }
            #endregion
      

  8.   

    建议楼主,从根本上转化一下对数据库操作的手法.因为数据库目的就是为了安全,便捷.那么应该将数据的操作,从程序逻辑层里抽出来,写成定制类,定为数据库操作层,然后通过数据返回,在程序上只做逻辑判断而已,那样程序既轻盈,也便于维护以上只是个人见解.另,针对你提出的问题,我建议你去了解两个集成程序集:HXJ,IBatisNet
      

  9.   

    写多条很简单啊.string sql1="delete mytab1";
    string sql2="select * from mytab2";dataAcc.ExecuteNonQuery(sql1+";"+sql2+";");这样既可.在MS SQL里面很好用.(如果是DB2数据库的话就不行)
      

  10.   

    trans, 存储过程, 
    或者直接用 “;” 分隔多个语句,写在一句SQL里