コード例 #1
0
        /// <summary>Executes <see cref="UpdateStatement"/>.</summary>
        public int Execute(UpdateStatement update, DbmsType dbms, IConnectionProvider conn, out CommandExecutionStatistics lastExecutedCommandInfo, int cmdTimeot = 30)
        {
            DbParameterCollection parameters = new DbParameterCollection();
            StringBuilder cmdText = new StringBuilder();
            RenderUpdate(update, dbms, cmdText, parameters);

            string command = cmdText.ToString();
            lastExecutedCommandInfo = new CommandExecutionStatistics(command);
            int rowsAffected = DbUtil.ExecuteNonQuery(conn, command, parameters, CommandType.Text, cmdTimeot);
            lastExecutedCommandInfo.StopTime();
            return rowsAffected;
        }
コード例 #2
0
        /// <summary>Executes the INSERT command. Automatically generates the code that retrieves the new identity for
        /// the supported databases. DBMS specific code depends on the DBMS property of the used ConnectionProvider.</summary>
        /// <param name="insert">INSERT statement to execute.</param>
        /// <param name="dbms">Target DBMS.</param>
        /// <param name="conn">Connection-transaction context to use.</param>
        /// <param name="lastExecutedCommandInfo">Output parameter: statistic for executed command.</param>
        /// <param name="cmdTimeout">Sets command timeout for SQL command insert statment.</param>
        /// <returns>Automatically generated ID for inserted row, or <b>null</b> if ID is not automatically generated.</returns>
        public object Execute(InsertStatement insert, DbmsType dbms, IConnectionProvider conn, out CommandExecutionStatistics lastExecutedCommandInfo, int cmdTimeout = 30)
        {
            // Renderer and DBMS will compute next ID, insert row and retrieve ID in one trip.
            StringBuilder cmdtxt = new StringBuilder();
            DbParameterCollection parameters = new DbParameterCollection();
            DbParameter newId = RenderInsert(insert, null, dbms, cmdtxt, parameters);

            string command = cmdtxt.ToString();
            lastExecutedCommandInfo = new CommandExecutionStatistics(command);
            DbUtil.ExecuteNonQuery(conn, command, parameters, CommandType.Text, cmdTimeout);
            lastExecutedCommandInfo.StopTime();

            object id;
            if (newId != null && newId.Value != DBNull.Value && newId.Value != null)
                id = newId.Value;
            else
                id = null;

            return id;
        }
コード例 #3
0
        /// <summary>Executes the INSERT command. Automatically generates the code that retrieves the new identity for
        /// the supported databases. DBMS specific code depends on the DBMS property of the used ConnectionProvider.</summary>
        /// <param name="insert">INSERT statement to execute.</param>
        /// <param name="dbms">Target DBMS.</param>
        /// <param name="conn">Connection-transaction context to use.</param>
        /// <param name="lastExecutedCommandInfo">Output parameter: statistic for executed command.</param>
        /// <returns>Automatically generated ID for inserted row, or <b>null</b> if ID is not automatically generated.</returns>
        public object Execute(InsertStatement insert, DbmsType dbms, IConnectionProvider conn, out CommandExecutionStatistics lastExecutedCommandInfo, int commandTimeout = 30)
        {
            // Renderer and DBMS will compute next ID, insert row and retrieve ID in one trip.
            StringBuilder cmdtxt = new StringBuilder();
            DbParameterCollection parameters = new DbParameterCollection();
            IDbColumn autoIdField = GetAutoIdField(insert.Table);
            DbParameter newId = (autoIdField != null) ? new DbParameter("newAutoIdentity___", autoIdField.DbType) { Direction = ParameterDirection.Output } : null;
            RenderInsert(insert, newId, dbms, cmdtxt, parameters);

            string command = cmdtxt.ToString();
            object id = null;
            lastExecutedCommandInfo = new CommandExecutionStatistics(command);
            DbUtil.ExecuteNonQuery(conn, command, parameters, CommandType.Text, commandTimeout);
            if (newId != null)
            {
                if (newId.Value == DBNull.Value)
                    id = null;
                else
                    id = newId.Value;
            }

            lastExecutedCommandInfo.StopTime();
            return id;
        }
コード例 #4
0
        /// <summary>Executes the INSERT command. Automatically generates the code that retrieves the new identity for
        /// the supported databases. DBMS specific code depends on the DBMS property of the used ConnectionProvider.</summary>
        /// <param name="insert">INSERT statement to execute.</param>
        /// <param name="dbms">Target DBMS.</param>
        /// <param name="conn">Connection-transaction context to use.</param>
        /// <param name="lastExecutedCommandInfo">Output parameter: statistic for executed command.</param>
        /// <param name="cmdTimeout">Timeout for the execution.</param>
        /// <returns>Automatically generated ID for inserted row, or <b>null</b> if ID is not automatically generated.</returns>
        public object Execute(InsertStatement insert, DbmsType dbms, IConnectionProvider conn, out CommandExecutionStatistics lastExecutedCommandInfo, int cmdTimeout = 30)
        {
            StringBuilder cmdtxt = new StringBuilder();
            DbParameterCollection parameters = new DbParameterCollection();
            RenderInsert(insert, null, dbms, cmdtxt, parameters);
            string command = cmdtxt.ToString();

            lastExecutedCommandInfo = new CommandExecutionStatistics(command);
            object id = null;
            if (HasAutoIdField(insert.Table))
                id = InsertAndSelectAutoNumber(conn, command, parameters, cmdTimeout);
            else
                Insert(conn, command, parameters, cmdTimeout);

            lastExecutedCommandInfo.StopTime();
            return id;
        }