internal void Retry(Task <DbConnectionInternal> retryTask) { _registration.Dispose(); try { SqlStatistics statistics = null; try { statistics = SqlStatistics.StartTimer(_parent.Statistics); if (retryTask.IsFaulted) { Exception e = retryTask.Exception.InnerException; _parent.CloseInnerConnection(); _parent._currentCompletion = null; _result.SetException(retryTask.Exception.InnerException); } else if (retryTask.IsCanceled) { _parent.CloseInnerConnection(); _parent._currentCompletion = null; _result.SetCanceled(); } else { bool result; // protect continuation from races with close and cancel lock (_parent.InnerConnection) { result = _parent.TryOpen(_retry); } if (result) { _parent._currentCompletion = null; _result.SetResult(null); } else { _parent.CloseInnerConnection(); _parent._currentCompletion = null; _result.SetException(ADP.ExceptionWithStackTrace(ADP.InternalError(ADP.InternalErrorCode.CompletedConnectReturnedPending))); } } } finally { SqlStatistics.StopTimer(statistics); } } catch (Exception e) { _parent.CloseInnerConnection(); _parent._currentCompletion = null; _result.SetException(e); } }
public void BatchExcute(BulkCopyModel bulkCopyModel, params sql.SqlCommand[] commands) //IContextInfo contextInfo, { if (commands?.Length < 1) { return; } using (var connection = new sql.SqlConnection(_connectionString)) { //connection.StateChange += new System.Data.StateChangeEventHandler((sender, e) => //{ // if (e.CurrentState == System.Data.ConnectionState.Open) // setContextInfo(connection, contextInfo); //}); connection.TryOpen(); using (var tran = connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted)) { try { foreach (var command in commands) { command.Connection = connection; command.Transaction = tran; command.ExecuteNonQuery(); } using (var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, tran)) { bulkCopy.BatchSize = bulkCopyModel.BatchSize; // ~ 100 bulkCopy.DestinationTableName = bulkCopyModel.TableName; if (bulkCopyModel.ColumnMappings != null) { bulkCopyModel.ColumnMappings.ForEach(c => bulkCopy.ColumnMappings.Add(c)); } var dataTable = bulkCopyModel.DataTable; bulkCopy.BulkCopyTimeout = bulkCopyModel.Timeout; bulkCopy.WriteToServer(dataTable); } tran.Commit(); } catch (Exception e) { tran.Rollback(); throw e; } finally { //clearContextInfo(connection, contextInfo); connection.TryClose(); } } } }
protected System.Data.DataSet Execute(sql.SqlCommand command) //, IContextInfo contextInfo { var dataSet = new System.Data.DataSet(); using (var connection = new sql.SqlConnection(_connectionString)) { //connection.StateChange += new System.Data.StateChangeEventHandler((sender, e) => //{ // if (e.CurrentState == System.Data.ConnectionState.Open) // setContextInfo(connection, contextInfo); //}); command.Connection = connection; connection.TryOpen(); using (var reader = command.ExecuteReader()) { do { if (reader.HasRows && reader.FieldCount > 0) { using (var table = dataSet.Tables.Add()) { table.Load(reader); dataSet.Tables.Add(table); } } else { reader.Close(); } }while (!reader.IsClosed); } //clearContextInfo(connection, contextInfo); connection.TryClose(); } return(dataSet); }
public void BatchExcute(params sql.SqlCommand[] commands) //IContextInfo contextInfo, { if (commands?.Length < 1) { return; } using (var connection = new sql.SqlConnection(_connectionString)) { //connection.StateChange += new System.Data.StateChangeEventHandler((sender, e) => //{ // if (e.CurrentState == System.Data.ConnectionState.Open) // setContextInfo(connection, contextInfo); //}); connection.TryOpen(); using (var tran = connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted)) { try { foreach (var command in commands) { command.Connection = connection; command.Transaction = tran; command.ExecuteNonQuery(); } tran.Commit(); } catch (Exception e) { tran.Rollback(); throw e; } finally { //clearContextInfo(connection, contextInfo); connection.TryClose(); } } } }
private DataTable loadData(string query) { var table = new DataTable(); using (var connection = new q.SqlConnection(_connectionString)) { connection.TryOpen(); using (var command = connection.CreateCommand()) { command.CommandText = query; using (var reader = command.ExecuteReader()) { table.Load(reader); reader.Close(); } } connection.TryClose(); } return(table); }