using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;
using System.Data.OleDb;
public class TableReader : XmlReader
{
private OleDbConnection cnn;
private OleDbCommand cmd = new OleDbCommand();
private OleDbDataReader reader;
private int columnIndex = -1;
private string strValue;
public TableReader(string connectionString,string sql)
{
cnn = new OleDbConnection(connectionString);
cmd.Connection = cnn;
cmd.CommandText = sql;
cmd.CommandType = CommandType.TableDirect;
cnn.Open();
reader = cmd.ExecuteReader();
}
public override int AttributeCount
{
get
{
return reader.FieldCount;
}
}
public override void Close()
{
reader.Close();
cnn.Close();
}
public override int Depth
{
get
{
return reader.Depth;
}
}
public override string GetAttribute(int i)
{
return reader.GetValue(i).ToString();
}
public override string GetAttribute(string name)
{
return reader.GetValue(reader.GetOrdinal(name)).ToString();
}
public override bool MoveToAttribute(string name)
{
columnIndex = reader.GetOrdinal(name);
return true;
}
public override bool MoveToElement()
{
columnIndex = -1;
return true;
}
public override bool MoveToFirstAttribute()
{
columnIndex = 0;
return true;
}
public override bool MoveToNextAttribute()
{
columnIndex++;
if (columnIndex > reader.FieldCount - 1)
{
return false;
}
else
{
return true;
}
}
public override bool Read()
{
columnIndex = -1;
strValue = "";
return reader.Read();
}
public override bool HasValue
{
get
{
return reader.IsDBNull(columnIndex);
}
}
public override bool ReadAttributeValue()
{
if (columnIndex < reader.FieldCount)
{
strValue = reader.GetValue(columnIndex).ToString();
return true;
}
else
{
return false;
}
}
public string Name
{
get
{
if (columnIndex == -1)
{
return cmd.CommandText;
}
else
{
return reader.GetName(columnIndex);
}
}
}
public override string Value
{
get
{
return strValue;
}
}
public override bool EOF
{
get
{
throw new Exception("not implemented.");
}
}
public override string GetAttribute(string name, string namespaceURI)
{
throw new Exception("not implemented.");
}
public override bool MoveToAttribute(string name, string ns)
{
throw new Exception("not implemented.");
}
public override string BaseURI
{
get
{
throw new Exception("not implemented.");
}
}
public override bool IsEmptyElement
{
get { throw new Exception("not implemented."); }
}
public override string LocalName
{
get { throw new Exception("not implemented."); }
}
public override string LookupNamespace(string prefix)
{
throw new Exception("not implemented.");
}
public override XmlNameTable NameTable
{
get { throw new Exception("not implemented."); }
}
public override string NamespaceURI
{
get { throw new Exception("not implemented."); }
}
public override XmlNodeType NodeType
{
get { throw new Exception("not implemented."); }
}
public override string Prefix
{
get { throw new Exception("not implemented."); }
}
public override ReadState ReadState
{
get { throw new Exception("not implemented."); }
}
public override void ResolveEntity()
{
throw new Exception("not implemented.");
}
}