224 lines
4.2 KiB
C#
224 lines
4.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Data;
|
|
using FirebirdSql.Data.FirebirdClient;
|
|
//using FirebirdSql.Data.Firebird;
|
|
using System.Globalization;
|
|
using System.Text;
|
|
|
|
namespace GZTW.Data.FireBird
|
|
{
|
|
/// <devdoc>
|
|
/// A wrapper to convert data from FireBird for the reader.
|
|
/// </devdoc>
|
|
internal class FireBirdDataReaderWrapper : MarshalByRefObject, IDataReader, IEnumerable
|
|
{
|
|
private FbDataReader innerReader;
|
|
|
|
public static explicit operator FbDataReader(FireBirdDataReaderWrapper fireBirdDataReaderWrapper)
|
|
{
|
|
return fireBirdDataReaderWrapper.InnerReader;
|
|
}
|
|
|
|
public FireBirdDataReaderWrapper(FbDataReader reader)
|
|
{
|
|
this.innerReader = reader;
|
|
}
|
|
|
|
public object this[int index]
|
|
{
|
|
get { return InnerReader[index]; }
|
|
}
|
|
|
|
public object this[string name]
|
|
{
|
|
get { return InnerReader[name]; }
|
|
}
|
|
|
|
IEnumerator IEnumerable.GetEnumerator()
|
|
{
|
|
return ((IEnumerable)InnerReader).GetEnumerator();
|
|
}
|
|
|
|
void IDisposable.Dispose()
|
|
{
|
|
//InnerReader.Dispose();
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
InnerReader.Close();
|
|
}
|
|
|
|
public DataTable GetSchemaTable()
|
|
{
|
|
return InnerReader.GetSchemaTable();
|
|
}
|
|
|
|
public bool NextResult()
|
|
{
|
|
return InnerReader.NextResult();
|
|
}
|
|
|
|
public bool Read()
|
|
{
|
|
return InnerReader.Read();
|
|
}
|
|
|
|
public int Depth
|
|
{
|
|
get { return InnerReader.Depth; }
|
|
}
|
|
|
|
public bool IsClosed
|
|
{
|
|
get { return InnerReader.IsClosed; }
|
|
}
|
|
|
|
public int RecordsAffected
|
|
{
|
|
get { return InnerReader.RecordsAffected; }
|
|
}
|
|
|
|
public int FieldCount
|
|
{
|
|
get { return InnerReader.FieldCount; }
|
|
}
|
|
|
|
|
|
public bool GetBoolean(int index)
|
|
{
|
|
if(InnerReader.GetInt16(index)!=0)
|
|
return true;
|
|
return false;
|
|
//not directly supported, using int16 instead
|
|
//int nBool=InnerReader.get
|
|
//return InnerReader.GetBoolean(index);
|
|
}
|
|
|
|
public byte GetByte(int index)
|
|
{
|
|
return InnerReader.GetByte(index);
|
|
|
|
}
|
|
|
|
public long GetBytes(int ordinal, long dataIndex, byte[] buffer, int bufferIndex, int length)
|
|
{
|
|
return InnerReader.GetBytes(ordinal, dataIndex, buffer, bufferIndex, length);
|
|
}
|
|
|
|
public Char GetChar(int index)
|
|
{
|
|
return InnerReader.GetChar(index);
|
|
}
|
|
|
|
public long GetChars(int index, long dataIndex, char[] buffer, int bufferIndex, int length)
|
|
{
|
|
return InnerReader.GetChars(index, dataIndex, buffer, bufferIndex, length);
|
|
}
|
|
|
|
public IDataReader GetData(int index)
|
|
{
|
|
return InnerReader.GetData(index);
|
|
}
|
|
|
|
public string GetDataTypeName(int index)
|
|
{
|
|
return InnerReader.GetDataTypeName(index);
|
|
}
|
|
|
|
public DateTime GetDateTime(int ordinal_)
|
|
{
|
|
return InnerReader.GetDateTime(ordinal_);
|
|
}
|
|
|
|
|
|
public decimal GetDecimal(int index)
|
|
{
|
|
return InnerReader.GetDecimal(index);
|
|
|
|
}
|
|
|
|
public double GetDouble(int index)
|
|
{
|
|
return InnerReader.GetDouble(index);
|
|
}
|
|
|
|
public Type GetFieldType(int index)
|
|
{
|
|
return InnerReader.GetFieldType(index);
|
|
}
|
|
|
|
|
|
public float GetFloat(int index)
|
|
{
|
|
return InnerReader.GetFloat(index);
|
|
}
|
|
|
|
|
|
//not directly supported using char38
|
|
public Guid GetGuid(int index)
|
|
{
|
|
string sTemp=InnerReader.GetString(index);
|
|
if(sTemp==null||sTemp=="")
|
|
return Guid.Empty;
|
|
else
|
|
return new Guid(sTemp);
|
|
|
|
}
|
|
|
|
|
|
public short GetInt16(int index)
|
|
{
|
|
return InnerReader.GetInt16(index);
|
|
}
|
|
|
|
public int GetInt32(int index)
|
|
{
|
|
return InnerReader.GetInt32(index);
|
|
}
|
|
|
|
public long GetInt64(int index)
|
|
{
|
|
return InnerReader.GetInt64(index);
|
|
}
|
|
|
|
public string GetName(int index)
|
|
{
|
|
return InnerReader.GetName(index);
|
|
}
|
|
|
|
public int GetOrdinal(string index)
|
|
{
|
|
|
|
return InnerReader.GetOrdinal(index);
|
|
}
|
|
|
|
|
|
public string GetString(int index)
|
|
{
|
|
return InnerReader.GetString(index);
|
|
|
|
}
|
|
|
|
public object GetValue(int index)
|
|
{
|
|
return InnerReader.GetValue(index);
|
|
}
|
|
|
|
public int GetValues(object[] values)
|
|
{
|
|
return InnerReader.GetValues(values);
|
|
}
|
|
|
|
public bool IsDBNull(int index)
|
|
{
|
|
return InnerReader.IsDBNull(index);
|
|
}
|
|
|
|
public FbDataReader InnerReader
|
|
{
|
|
get { return this.innerReader; }
|
|
}
|
|
}
|
|
} |