async Task <object> ExecCmdImplLogged(OneConn oc, SqlCommandData data, CancellationToken ct) { var sbSql = new System.Text.StringBuilder(data.SqlText); sbSql.Replace('\r', ' ').Replace('\n', ' '); int L; do { L = sbSql.Length; sbSql.Replace(" ", " "); } while (L != sbSql.Length); var sw = new System.Diagnostics.Stopwatch(); sw.Start(); try { var res = await ExecCmdImpl(oc, data, ct); var lst = res as IList; sbSql.Insert(0, string.Format("{0}\t{1}\t", sw.ElapsedMilliseconds, (lst == null) ? -1 : lst.Count)); Diagnostics.Logger.TraceEvent(System.Diagnostics.TraceEventType.Information, 1, sbSql.ToString()); //System.Diagnostics.Trace.WriteLine(sbSql.ToString()); return(res); } catch (DbException ex) { sbSql.Insert(0, string.Format("{0}\tERR\t", ex.Message)); Diagnostics.Logger.TraceEvent(System.Diagnostics.TraceEventType.Error, 1, sbSql.ToString()); throw; } }
OneConn Pool(int i) { var c = _pool[i]; if (c == null) { c = new OneConn() { conn = dbms.GetConnection(connString) }; try { c.conn.Open(); } catch (Exception ex) { throw ex; } if (initCmds.Length > 0) { using (var cmd = c.conn.CreateCommand()) { foreach (var initCmd in initCmds) { cmd.CommandText = initCmd; cmd.ExecuteNonQuery(); } } } _pool[i] = c; } return(c); }
async Task <object> ExecCmdImpl(OneConn oc, SqlCommandData data, CancellationToken ct) { int sum = 0; foreach (var dbCmd in dbms.GetSpecificCommands(oc.conn, data)) { using (dbCmd) try { dbCmd.Transaction = oc.GetTransaction(autoCommitPeriod); try { dbCmd.CommandText = data.SqlText; if (data.Kind == CommandKind.NonQuery) { // For MS SQL can be multiple INSERT commands due rows count limitation in one INSERT sum += dbCmd.ExecuteNonQuery(); continue; } } catch (Exception ex) { throw ex; } if (data.Kind == CommandKind.GetSchema) { using (var rdr = dbCmd.ExecuteReader(System.Data.CommandBehavior.SchemaOnly)) return(rdr.GetSchemaTable()); } using (var rdr = dbCmd.ExecuteReader())// (await SafeGetRdr(oraCmd, ct)) { if (data.ConvertMultiResultsToLists) { return(ReadGroupedRows(rdr)); } return(ReadRows(rdr)); } } finally { oc.Commit(); } } return(sum); // return from NonQuery //throw new InvalidOperationException("You re not supposed to be here)"); }