}//ProcessQuery() // private void ProcessWriteQuery(Queries.QueryBase query, MySqlConnection mySqlConnection) { try { string cmdString = query.GetQuery(m_Database); Log.NewEntry(LogLevel.Minor, "ProcessQuery: {0}", cmdString); if (string.IsNullOrEmpty(cmdString)) { Log.NewEntry(LogLevel.Major, "ProcessQuery: Query provided is empty."); query.Status = Queries.QueryStatus.Failed; OnQueryResponse((EventArgs)query); } MySqlCommand cmd = new MySqlCommand(cmdString, mySqlConnection); int nRows = cmd.ExecuteNonQuery(); query.Status = Queries.QueryStatus.Completed; } catch (Exception e) { Log.NewEntry(LogLevel.Major, "ProcessQuery: {1} exception: {0}", e.Message, query); query.ErrorMessage = e.Message; query.Status = Queries.QueryStatus.Failed; } // // This is complete. Push onto the queue. // this.HubEventEnqueue(query); }//ProcessQuery()
}//HubEventHandler() // // // ************************************************* // **** ProcessQuery(iQuery) **** // ************************************************* private void ProcessReadQuery(Queries.QueryBase query) { MySqlConnection mySqlConnection = null; // Try to connect if (!m_Database.IsTryToConnect(ref mySqlConnection)) { // Failed to connect. Log.NewEntry(LogLevel.Major, "ProcessQuery: Failed to connect to {0}.", m_Database); query.Status = Queries.QueryStatus.Failed; OnQueryResponse((EventArgs)query); } // MySqlDataReader reader = null; try { string cmdString = query.GetQuery(m_Database); Log.NewEntry(LogLevel.Minor, "ProcessQuery: {0}", cmdString); if (string.IsNullOrEmpty(cmdString)) { Log.NewEntry(LogLevel.Major, "ProcessQuery: Query provided is empty."); query.Status = Queries.QueryStatus.Failed; OnQueryResponse((EventArgs)query); } MySqlCommand cmd = new MySqlCommand(cmdString, mySqlConnection); reader = cmd.ExecuteReader(); int fieldCount = reader.FieldCount; List <string> fieldNames = new List <string>(); // place to store column names List <object> values = new List <object>(); // place to store values. Count will be (fieldCount * nRows) for (int i = 0; i < fieldCount; ++i) { fieldNames.Add(reader.GetName(i)); } while (reader.Read()) { // Reading the next row for (int i = 0; i < fieldCount; ++i) { // Read the ith column in this row. if (reader.IsDBNull(i)) { values.Add(null); continue; } Type type = reader.GetFieldType(i); if (type == typeof(int)) { values.Add(reader.GetInt32(i)); } else if (type == typeof(double)) { values.Add(reader.GetDouble(i)); } else { object o = reader.GetValue(i); values.Add(o); } }//next ith column. } // Give the data to the query. query.Status = query.AcceptData(m_Database, values, fieldNames); } catch (Exception e) { Log.NewEntry(LogLevel.Major, "ProcessQuery: {1} exception: {0}", e.Message, query); query.ErrorMessage = e.Message; query.Status = Queries.QueryStatus.Failed; } if (reader != null && reader.IsClosed == false) { try { reader.Close(); } catch (Exception e) { Log.NewEntry(LogLevel.Major, "ProcessQuery: Closing reader {1} exception: {0}", e.Message, query); } } if (mySqlConnection != null) { mySqlConnection.Close(); } // // This is complete. Push onto the queue. // this.HubEventEnqueue(query); }//ProcessQuery()