Mega Code Archive

 
Categories / C# Tutorial / XML
 

Extends XmlReader to wrap Sql statement

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.");         }     }