/// <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; }
/// <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; }
/// <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; }
/// <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; }