rt

解决方案 »

  1.   

     OracleDataAdapter adp = new OracleDataAdapter("",conn);
                adp.InsertCommand = "xxxx";
                adp.UpdateCommand = "yyyy";
                adp.DeleteCommand = "dddd";
                adp.Update (dataset)
      

  2.   

    Update(String insertSQL, String updateSQL, String deleteSQL, DataTable dt)
            {
                OracleConnection conn = this.GetConnection();
                OracleDataAdapter adp = new OracleDataAdapter();
                conn.Open();
                OracleTransaction tr = conn.BeginTransaction();
                adp.InsertCommand = new OracleCommand(STR_EMPTY, conn, tr);
                adp.UpdateCommand = new OracleCommand(STR_EMPTY, conn, tr);
                adp.DeleteCommand = new OracleCommand(STR_EMPTY, conn, tr);
                try
                {
                    this.Update_Dt(insertSQL, updateSQL, deleteSQL, dt, adp);
                    tr.Commit();
                }
                catch (Exception e)
                {
                    tr.Rollback();
                    throw e;
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                        conn.Close();
                }
                return true;
            }/// <summary>
            /// 根据传入的3个SQL更新DataSet
            /// </summary>
            /// <param name="insertSQL">插入SQL</param>
            /// <param name="updateSQL">更新SQL</param>
            /// <param name="deleteSQL">删除SQL</param>
            /// <param name="dt">DataTable</param>
            /// <param name="adp">OracleDataAdapter</param>
            /// <returns>成功/失败</returns>
            private Boolean Update_Dt(String insertSQL, String updateSQL, String deleteSQL, DataTable dt, OracleDataAdapter adp)
            {
                dt = this.ReplaceAddedRow(dt);
                adp.InsertCommand.CommandText = insertSQL;
                adp.UpdateCommand.CommandText = updateSQL;
                adp.DeleteCommand.CommandText = deleteSQL;
                BandingColumnsToComm(dt, adp.InsertCommand);
                BandingColumnsToComm(dt, adp.UpdateCommand);
                BandingColumnsToComm(dt, adp.DeleteCommand);
                adp.Update(dt);           
                return true;
            }        /// <summary>
            /// 将字段绑定到SQL变量
            /// </summary>
            /// <param name="comm">OracleCommand</param>
            private void BandingColumnsToComm(DataTable dt, OracleCommand comm)
            {
                comm.CommandText.Replace('@',':');
                MatchCollection mc = this.re.Matches(comm.CommandText);
                foreach (Match mtch in mc)
                {
                    String colName = mtch.Value.Substring(INT_V);
                    DataTypeOfCol colType = this.GetDataTypeOfCol(dt,colName);
                    comm.Parameters.Add(mtch.Value, colType.TypeOfCol, colType.LenOfCol, colName);
                }
            }
    够具体了吧