[COLOR=#0000FF]using[/color] System;
[COLOR=#0000FF]using[/color] System.Data;
[COLOR=#0000FF]namespace[/color] Postec.Micros.Data
{
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]class[/color] [COLOR=#2B91AF]MicrosDatabase[/color] : [COLOR=#2B91AF]IDisposable[/color]
{
[COLOR=#0000FF]private[/color] [COLOR=#2B91AF]IDbConnection[/color] _IDbConnection;
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Creates a new MicrosDatabase connection using a default OdbcConnection for a backend[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The new MicrosDatabase[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]static[/color] [COLOR=#2B91AF]MicrosDatabase[/color] OdbcDbConnection()
{
[COLOR=#0000FF]return[/color] [COLOR=#2B91AF]MicrosDatabase[/color].OdbcDbConnection([COLOR=#A31515]"custom"[/color], [COLOR=#A31515]"custom"[/color], [COLOR=#A31515]"micros"[/color]);
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Coonstructs a MicrosDatabase object using default DSN of micros using provided Username and Password[/color]
[COLOR=#808080]///[/color][COLOR=#008000] with an OdbcConnection for a backend[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Username">[/color][COLOR=#008000]Database username to use for connection; using DBA account is NOT recommended[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Password">[/color][COLOR=#008000]Database user's password[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The new MicrosDatabase[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]static[/color] [COLOR=#2B91AF]MicrosDatabase[/color] OdbcDbConnection([COLOR=#0000FF]string[/color] Username, [COLOR=#0000FF]string[/color] Password)
{
[COLOR=#0000FF]return[/color] [COLOR=#2B91AF]MicrosDatabase[/color].OdbcDbConnection(Username, Password, [COLOR=#A31515]"micros"[/color]);
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Constructions a MicrosDatabase using the provided DSN. Connects using the provided Username and Password.[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Username">[/color][COLOR=#008000]Database username to use for connection; using DBA account is NOT recommended[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Password">[/color][COLOR=#008000]Database user's password[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="DSN">[/color][COLOR=#008000]The DSN configured to connect to micros on the machine. See SysWOW64 folder for connection manager[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The new MicrosDatabase[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]static[/color] [COLOR=#2B91AF]MicrosDatabase[/color] OdbcDbConnection([COLOR=#0000FF]string[/color] Username, [COLOR=#0000FF]string[/color] Password, [COLOR=#0000FF]string[/color] DSN)
{
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]new[/color] [COLOR=#2B91AF]MicrosDatabase[/color]()
{
_IDbConnection = [COLOR=#0000FF]new[/color] System.Data.Odbc.[COLOR=#2B91AF]OdbcConnection[/color]([COLOR=#0000FF]string[/color].Format([COLOR=#A31515]"DSN={0};UID={1};PWD={2}"[/color], DSN, Username, Password))
};
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Creates a new OleDB connection to the micros server.[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Provider">[/color][COLOR=#008000]Specify which version of RES is being run so that the proper connection provider is used[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="ServerName">[/color][COLOR=#008000]The computer name; eg: AT9225[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Username">[/color][COLOR=#008000]The database username to use in our connection; do NOT use DBA as a stored connection[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Password">[/color][COLOR=#008000]The database user's password[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="IPAddress">[/color][COLOR=#008000]The IP address of the server we are connecting to[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The new MicrosDatabase[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]static[/color] [COLOR=#2B91AF]MicrosDatabase[/color] OleDbConnection([COLOR=#2B91AF]MicrosOleProvider[/color] Provider, [COLOR=#0000FF]string[/color] ServerName, [COLOR=#0000FF]string[/color] Username, [COLOR=#0000FF]string[/color] Password, [COLOR=#0000FF]string[/color] IPAddress)
{
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]new[/color] [COLOR=#2B91AF]MicrosDatabase[/color]()
{
_IDbConnection = [COLOR=#0000FF]new[/color] System.Data.OleDb.[COLOR=#2B91AF]OleDbConnection[/color](
[COLOR=#0000FF]string[/color].Format([COLOR=#A31515]"Provider={0};EngineName=sql{1};UID={2};PWD={3};Links=TCPIP(Host={4})"[/color],
Provider, ServerName, Username, Password, IPAddress))
};
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Queries the database[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="QueryString">[/color][COLOR=#008000]QueryString to run against the database[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]A data table with the queries result set[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#2B91AF]DataTable[/color] Query([COLOR=#0000FF]string[/color] QueryString)
{
TriggerQuery(QueryString);
[COLOR=#0000FF]if[/color] ([COLOR=#0000FF]string[/color].IsNullOrEmpty(QueryString))
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]null[/color];
[COLOR=#0000FF]using[/color] ([COLOR=#2B91AF]IDbCommand[/color] Cmd = _IDbConnection.CreateCommand())
{
Cmd.CommandText = QueryString;
[COLOR=#0000FF]using[/color] ([COLOR=#2B91AF]IDataReader[/color] DbDataReader = Cmd.ExecuteReader())
{
[COLOR=#0000FF]if[/color] (DbDataReader.FieldCount == 0)
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]null[/color];
[COLOR=#2B91AF]DataTable[/color] tempTable = [COLOR=#0000FF]new[/color] [COLOR=#2B91AF]DataTable[/color]();
[COLOR=#2B91AF]DataColumn[/color] tempColumn;
[COLOR=#0000FF]using[/color] ([COLOR=#2B91AF]DataTable[/color] schemaTable = DbDataReader.GetSchemaTable())
{
[COLOR=#0000FF]for[/color] ([COLOR=#0000FF]int[/color] i = 0; i < schemaTable.Rows.Count; i++)
{
tempColumn = [COLOR=#0000FF]new[/color] [COLOR=#2B91AF]DataColumn[/color](([COLOR=#0000FF]string[/color])schemaTable.Rows[i][[COLOR=#A31515]"ColumnName"[/color]], ([COLOR=#2B91AF]Type[/color])schemaTable.Rows[i][[COLOR=#A31515]"DataType"[/color]]);
[COLOR=#008000]//have to do this because numeric fields can be null in the micros database[/color]
tempColumn.AllowDBNull = [COLOR=#0000FF]true[/color];
tempTable.Columns.Add(tempColumn);
}
}
[COLOR=#2B91AF]DataRow[/color] tempRow;
[COLOR=#0000FF]while[/color] (DbDataReader.Read())
{
tempRow = tempTable.NewRow();
[COLOR=#0000FF]for[/color] ([COLOR=#0000FF]int[/color] i = 0; i < DbDataReader.FieldCount; i++)
tempRow[i] = DbDataReader[i];
tempTable.Rows.Add(tempRow);
}
[COLOR=#0000FF]return[/color] tempTable;
}
}
}
[COLOR=#0000FF]public[/color] [COLOR=#2B91AF]IDataReader[/color] RawQuery([COLOR=#0000FF]string[/color] QueryString)
{
TriggerQuery(QueryString);
[COLOR=#0000FF]if[/color] ([COLOR=#0000FF]string[/color].IsNullOrEmpty(QueryString))
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]null[/color];
[COLOR=#0000FF]using[/color] ([COLOR=#2B91AF]IDbCommand[/color] Cmd = _IDbConnection.CreateCommand())
{
Cmd.CommandText = QueryString;
[COLOR=#0000FF]return[/color] Cmd.ExecuteReader();
}
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Runs a stored procedure on the database that expects a returned data set[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SPName">[/color][COLOR=#008000]The name of the stored procedure to run. Full name; eg: reports.v_R_sys_menuitem[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SpParams">[/color][COLOR=#008000]The parametes, if any, to pass to the stored procedure[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The dataset returned by the query[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#2B91AF]DataTable[/color] RunStoredProcedure([COLOR=#0000FF]string[/color] SPName, [COLOR=#2B91AF]SPParam[/color][] SpParams = [COLOR=#0000FF]null[/color])
{
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]this[/color].Query(FormatStoredPorcedure(SPName, SpParams));
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Runs a stored procedure on the database that expects a returned data set[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SPName">[/color][COLOR=#008000]The name of the stored procedure to run. Full name; eg: reports.v_R_sys_menuitem[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SpParams">[/color][COLOR=#008000]The parametes, if any, to pass to the stored procedure[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The dataset returned by the query[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#2B91AF]IDataReader[/color] RawRunStoredProcedure([COLOR=#0000FF]string[/color] SPName, [COLOR=#2B91AF]SPParam[/color][] SpParams = [COLOR=#0000FF]null[/color])
{
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]this[/color].RawQuery(FormatStoredPorcedure(SPName, SpParams));
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Runs a stored procedure on the database with no expected return (eg: micros.sp_PurgeHistory)[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SPName">[/color][COLOR=#008000]The name of the stored procedure to run. Full name; eg: micros.sp_PurgeHistory[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SpParams">[/color][COLOR=#008000]The parametes, if any, to pass to the stored procedure[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The number of rows affected[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]int[/color] ExecuteStoredProcedure([COLOR=#0000FF]string[/color] SPName, [COLOR=#2B91AF]SPParam[/color][] SpParams = [COLOR=#0000FF]null[/color])
{
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]this[/color].Execute(FormatStoredPorcedure(SPName, SpParams));
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Internal method to format a stored procedure into a usable SQL query string[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SPName"></param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="SpParams"></param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns></returns>[/color]
[COLOR=#0000FF]private[/color] [COLOR=#0000FF]string[/color] FormatStoredPorcedure([COLOR=#0000FF]string[/color] SPName, [COLOR=#2B91AF]SPParam[/color][] SpParams = [COLOR=#0000FF]null[/color])
{
[COLOR=#0000FF]if[/color] ([COLOR=#0000FF]string[/color].IsNullOrEmpty(SPName))
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]null[/color];
[COLOR=#0000FF]if[/color] (SpParams == [COLOR=#0000FF]null[/color] || SpParams.Length < 1)
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]string[/color].Format([COLOR=#A31515]"call {0}"[/color], SPName);
System.Text.[COLOR=#2B91AF]StringBuilder[/color] sb = [COLOR=#0000FF]new[/color] System.Text.[COLOR=#2B91AF]StringBuilder[/color]();
sb.Append([COLOR=#A31515]"call "[/color]).Append(SPName).Append([COLOR=#A31515]"("[/color]).Append(SpParams[0].ToString());
[COLOR=#0000FF]for[/color] ([COLOR=#0000FF]int[/color] i = 1; i < SpParams.Length; i++)
sb.Append([COLOR=#A31515]","[/color]).Append(SpParams[i].ToString());
sb.Append([COLOR=#A31515]")"[/color]);
[COLOR=#0000FF]return[/color] sb.ToString();
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Executes an SQL Query against the Micros database.[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="QueryString">[/color][COLOR=#008000]The query to run on the Micros database[/color][COLOR=#808080]</param>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]The number of rows affected by the query. -1 for exception/not connected[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]int[/color] Execute([COLOR=#0000FF]string[/color] QueryString)
{
TriggerQuery(QueryString);
[COLOR=#0000FF]if[/color] ([COLOR=#0000FF]string[/color].IsNullOrEmpty(QueryString))
[COLOR=#0000FF]return[/color] 0;
[COLOR=#0000FF]using[/color] ([COLOR=#2B91AF]IDbCommand[/color] Cmd = _IDbConnection.CreateCommand())
{
Cmd.CommandText = QueryString;
[COLOR=#0000FF]return[/color] Cmd.ExecuteNonQuery();
}
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] If the connection is not already open, this will open the connection[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<returns>[/color][COLOR=#008000]If the connection was successful[/color][COLOR=#808080]</returns>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]bool[/color] Connect()
{
[COLOR=#0000FF]if[/color] (Connected)
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]true[/color];
_IDbConnection.Open();
[COLOR=#0000FF]return[/color] Connected;
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Closes the database connection without disposing of the database object[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]bool[/color] Close()
{
_IDbConnection.Close();
[COLOR=#0000FF]return[/color] _IDbConnection.State == [COLOR=#2B91AF]ConnectionState[/color].Closed;
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Returns current Connected status of Micros database connection[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]bool[/color] Connected
{
[COLOR=#0000FF]get[/color]
{
[COLOR=#0000FF]if[/color] (_IDbConnection == [COLOR=#0000FF]null[/color])
[COLOR=#0000FF]return[/color] [COLOR=#0000FF]false[/color];
[COLOR=#0000FF]return[/color] _IDbConnection.State == System.Data.[COLOR=#2B91AF]ConnectionState[/color].Open;
}
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Current ConnectionState of the Micros Database Connection[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#2B91AF]ConnectionState[/color] State
{
[COLOR=#0000FF]get[/color]
{
[COLOR=#0000FF]return[/color] _IDbConnection.State;
}
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Current Micros Database Connection String[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]string[/color] ConnectionString
{
[COLOR=#0000FF]get[/color]
{
[COLOR=#0000FF]return[/color] _IDbConnection.ConnectionString;
}
[COLOR=#0000FF]set[/color]
{
_IDbConnection.ConnectionString = [COLOR=#0000FF]value[/color];
}
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Calls Dispose(true)[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]void[/color] Dispose()
{
Dispose([COLOR=#0000FF]true[/color]);
}
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] Disposes of our database connection[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]</summary>[/color]
[COLOR=#808080]///[/color][COLOR=#008000] [/color][COLOR=#808080]<param name="Disposing"></param>[/color]
[COLOR=#0000FF]protected[/color] [COLOR=#0000FF]virtual[/color] [COLOR=#0000FF]void[/color] Dispose([COLOR=#0000FF]bool[/color] Disposing)
{
[COLOR=#0000FF]if[/color] (Disposing)
{
[COLOR=#0000FF]if[/color] (_IDbConnection != [COLOR=#0000FF]null[/color])
{
_IDbConnection.Dispose();
_IDbConnection = [COLOR=#0000FF]null[/color];
}
}
}
[COLOR=#008000]/*[/color]
[COLOR=#008000] * methods that any class using this library can plug into if they want to see[/color]
[COLOR=#008000] * Query events. Show finally query statement that is being run[/color]
[COLOR=#008000] * Useful if you are having problems with a stored procedure and need to verify its[/color]
[COLOR=#008000] * SQL syntax.[/color]
[COLOR=#008000] */[/color]
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]delegate[/color] [COLOR=#0000FF]void[/color] [COLOR=#2B91AF]OnQueryHandler[/color]([COLOR=#0000FF]object[/color] sender, [COLOR=#2B91AF]QueryArgs[/color] e);
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]event[/color] [COLOR=#2B91AF]OnQueryHandler[/color] OnQuery;
[COLOR=#0000FF]private[/color] [COLOR=#0000FF]void[/color] TriggerQuery([COLOR=#0000FF]string[/color] queryString)
{
[COLOR=#0000FF]if[/color] (OnQuery == [COLOR=#0000FF]null[/color]) [COLOR=#0000FF]return[/color];
OnQuery([COLOR=#0000FF]this[/color], [COLOR=#0000FF]new[/color] [COLOR=#2B91AF]QueryArgs[/color](queryString));
}
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]class[/color] [COLOR=#2B91AF]QueryArgs[/color] : [COLOR=#2B91AF]EventArgs[/color]
{
[COLOR=#0000FF]public[/color] [COLOR=#0000FF]string[/color] QueryString { [COLOR=#0000FF]get[/color]; [COLOR=#0000FF]private[/color] [COLOR=#0000FF]set[/color]; }
[COLOR=#0000FF]public[/color] QueryArgs([COLOR=#0000FF]string[/color] QueryString)
{
[COLOR=#0000FF]this[/color].QueryString = QueryString;
}
}
}
}