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;
}
}
}