public override bool ToSQL(string tablename, Guid executionID, StringBuilder sb, bool firstItem) { // generate the SQL for inserting this log item into the database (will be appended to a larger query for inserting several records in a single query) // the entire insert query looks like this: // Insert into CommsLog (FDAExecutionID, connectionID, DeviceAddress, Attempt, TimestampUTC1, TimestampUTC2, ElapsedPeriod, TransCode, TransStatus, ApplicationMessage,DBRGUID,DBRGIdx,DBRGSize,Details01,TxSize,Details02,RxSize,ProtocolNote,Protocol) // values (log item 1),(log item 2), etc... try { Int64 elapsed = Convert.ToInt64(ResponseTimestamp.Subtract(RequestTimestamp).TotalMilliseconds); if (!firstItem) { sb.Append(","); } sb.Append("('"); sb.Append(executionID); sb.Append("','"); sb.Append(ConnectionID.ToString()); sb.Append("','"); sb.Append(DeviceAddress); sb.Append("',"); sb.Append(AttemptNum); sb.Append(",'"); sb.Append(DateTimeHelpers.FormatDateTime(RequestTimestamp)); sb.Append("','"); sb.Append(DateTimeHelpers.FormatDateTime(ResponseTimestamp)); sb.Append("',"); sb.Append(elapsed); sb.Append(","); sb.Append(EventType); sb.Append(","); if (ResultStatus == DataRequest.RequestStatus.Success) { sb.Append("cast(1 as bit),"); } else { sb.Append("cast(0 as bit),"); } sb.Append("'"); sb.Append(ApplicationMessage); sb.Append("','"); sb.Append(GroupID); sb.Append("','"); sb.Append(GroupIdx); sb.Append("',"); sb.Append(GroupSize); sb.Append(",'Tx: "); sb.Append(BitConverter.ToString(RequestBytes)); sb.Append("',"); sb.Append(RequestBytes.Length); if (ResponseBytes != null) { sb.Append(",'Rx: "); sb.Append(BitConverter.ToString(ResponseBytes)); sb.Append("',"); sb.Append(ResponseBytes.Length); sb.Append(",'"); } else { sb.Append(",'N/A',0,'"); } sb.Append(Details.Replace("'", "''")); sb.Append("','"); sb.Append(Protocol); sb.Append("')"); } catch (Exception ex) { Globals.SystemManager.LogApplicationError(Globals.FDANow(), ex, "Error occurred while adding a comms log comms transaction item to an SQL insert batch"); return(false); } return(true); }
public void ToSQL(string tablename, Guid executionID, StringBuilder sb, bool firstItem) { string objname; string desc; string stacktrace; objname = ObjectName?.Replace("'", "''"); if (objname == null) { objname = ""; } desc = Description?.Replace("'", "''"); if (desc == null) { desc = ""; } stacktrace = StackTrace?.Replace("'", "''"); if (stacktrace == null) { stacktrace = ""; } // sb.Clear(); // sb.Append("INSERT INTO "); // sb.Append(tablename); // sb.Append(" (FDAExecutionID,Timestamp,EventType,ObjectType,ObjectName,Description,ErrorCode,StackTrace) VALUES ('"); if (!firstItem) { sb.Append(","); } sb.Append("('"); sb.Append(executionID); sb.Append("','"); sb.Append(DateTimeHelpers.FormatDateTime(Timestamp)); sb.Append("','"); sb.Append(EventType.ToString()); sb.Append("','"); sb.Append(ObjectType); sb.Append("','"); sb.Append(objname); sb.Append("','"); sb.Append(desc); sb.Append("','"); sb.Append(ErrorCode); sb.Append("','"); sb.Append(stacktrace); sb.Append("')"); /* old way, slower * sql = "INSERT INTO " + Globals.SystemManager.GetTableName("AppLog") + " (FDAExecutionID,Timestamp,EventType,ObjectType,ObjectName,Description,ErrorCode,StackTrace) VALUES ('"; * sql += executionID + "','"; * sql += Helpers.FormatDateTime(Timestamp) + "','"; * sql += EventType.ToString() + "','"; * sql += ObjectType + "','"; * sql += ObjectName?.Replace("'","''") + "','"; * sql += Description?.Replace("'","''") + "','"; * sql += ErrorCode + "','"; * sql += StackTrace?.Replace("'","''") + "');"; * * return sql; */ }