using System; using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.IO; namespace com.cloudsoft.utils { /// /// Database Parameters class. /// Allows parameters to be added to a DBHelper. /// Can only be instatiated from a DBHelper. /// JF 12/2007 - DBParams can now represent either an OleDbCommand or an OleDbCommand. Which one /// is decided when it is created by DBHelper. Once it is created though the client doesn't need to /// know which one it is dealing with. /// public class DBParams { /// /// DataType enumerator. /// /// /// /// VarChar - Varchar (string) /// Long - Long integer /// Double - Double (float) /// DateTime - Date /// LongVarChar - Clob /// /// public enum DataType { /// Varchar VarChar, /// Long Long, /// Double Double, /// DateTime DateTime, /// LongVarChar LongVarChar, /// BLOB BLOB, /// Clob Clob, /// Xml Xml }; internal OleDbCommand Command; /// /// Oracle type equivalent of the oleType function. Returns the OleDbType from the general /// DBParams.DataType. /// /// A non-provider specific datatype. /// An OleDbType. private OleDbType _ODACType(DataType eDT) { switch (eDT) { case DataType.DateTime: return OleDbType.Date; case DataType.Long: return OleDbType.Integer; case DataType.Double: return OleDbType.Double; case DataType.LongVarChar: return OleDbType.LongVarChar; case DataType.BLOB: return OleDbType.LongVarBinary; case DataType.Clob: return OleDbType.LongVarChar; default: return OleDbType.VarChar; } } /// /// OleDbCommand based DBParams constructor. /// /// The OleDbCommand to wrap. internal DBParams(OleDbCommand oCommand) { Command = oCommand; } /// /// Add Parameter method for the OleDbCommand /// /// /// public void add(String zParamName, DataType eDT, object value) { //Command.Parameters.Add(new OleDbParameter(zParamName, _ODACType(eDT), value, System.Data.ParameterDirection.Input)); } /// /// Adds a Input Parameter to the DBHelper /// /// Parameter Name /// DataType /// Size of the parameter /// Value of the Parameter public void add(String zParamName, DataType eDT, int iSize, Object oValue) { //Set the size to 1 for longvarchars... if ((eDT == DataType.LongVarChar) && (oValue == null)) iSize = 1; //Ass the parameter... Command.Parameters.Add(zParamName, _ODACType(eDT), iSize).Value = oValue; } /// /// Adds a Input Parameter to the DBHelper without a value /// /// Parameter Name /// DataType /// Size of the parameter public void add(String zParamName, DataType eDT, int iSize) { //Add the parameter... Command.Parameters.Add(zParamName, _ODACType(eDT), iSize); } /// /// Adds a Input Parameter to the DBHelper without a value or size /// /// Parameter Name /// DataType /// Size of the parameter public void add(String zParamName, DataType eDT) { //Add the parameter... Command.Parameters.Add(zParamName, _ODACType(eDT)); } /// /// Sets the input parameter value for a given parameter name /// /// Parameter Name /// Value to set the input parameter to public void set(String zParamName, Object oValue) { //Set the parameter value... Command.Parameters[zParamName].Value = oValue; } /// /// Sets the input parameter value for a given parameter index /// /// Parameter Index /// Value to set the input parameter to public void set(int index, Object oValue) { //Set the parameter value... Command.Parameters[index].Value = oValue; } public void set(int iParam, Object oValue, OleDbType iType) { OleDbParameter oParam = null; if (Command.Parameters.Contains(iParam.ToString())) { oParam = Command.Parameters[iParam.ToString()]; oParam.Value = oValue; } else { oParam = new OleDbParameter(iParam.ToString(), oValue); if (iType != null) oParam.OleDbType = iType; Command.Parameters.Add(oParam); } } /// /// Adds an Output Parameter /// /// Parameter Name /// Data Type /// Size of the parameter public void addOutput(String zParamName, DataType eDT, int iSize) { //Add the output parameter... Command.Parameters.Add(zParamName, _ODACType(eDT), iSize).Direction = System.Data.ParameterDirection.Output; } /// /// Exposes the Parameters for the OleDbCommand. /// /// OleDbParameterCollection public OleDbParameterCollection ODACParameters() { return Command.Parameters; } /// /// Closes the appropriate underlying connection. /// public void CloseConnection() { Command.Connection.Close(); } /// /// Closes the appropriate underlying command. /// public void CloseCommand() { Command.Connection.Dispose(); Command.Dispose(); } /// /// Executes the appropriate underlying command. /// /// int public int ExecuteNonQuery() { return Command.ExecuteNonQuery(); } public OleDbCommand AsOleDbCommand() { return Command; } } }