2012-07-10 115 views
0

我正在尝试编写一个小的C#控制台应用程序,该应用程序将在现有的ODBC连接上运行查询并将ResultSet转换为XML文件。请问一些人,请说明一下吗?将ODBC查询结果转换为XML

我想用System.Xml.XmlReader执行下面的背景下,这个任务,

System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(); 
conn.ConnectionString = "FIL=MS Access;DSN=valid data source name"; 
string query = "SELECT * FROM Customers FOR XML AUTO, ELEMENTS"; 

    try { 
     OdbcCommand odbcComm = new OdbcCommand(query); 
     conn.Open(); 
     odbcComm.Connection = conn; 

     OdbcDataReader data = odbcComm.ExecuteReader(); 
         . 
         . 
         . 

    } catch (Exception ex) { 
      System.Console.WriteLine("Failed to connect to the data source"); 
    } finally { 
      conn.Close(); 
    } 

你觉得呢?

+0

你到目前为止有什么..你看过XML序列化或使用数据集? – MethodMan 2012-07-10 05:40:44

+0

XmlReader是一个很好的对象吗? – Sam 2012-07-10 06:00:07

+0

是的,我会举一个我已经使用过的例子,但是我的例子使用了一个Web服务,所以你可以通过实现你自己的解决方案来弄清楚我正在使用的东西的要点 – MethodMan 2012-07-10 06:02:15

回答

0

这是我使用web服务完成的。 我不打算把网络服务代码放在这里,因为工作中有拷贝的权利。 但这个代码应该给你一个想法 基本上创建一个方法,并使节点部分从该方法的返回/结果,然后从那里使用xmlnodeReader,并从那里你需要什么领域取代我在DataTable和行与你自己的字段名值

XmlNode node = svc.GetInfoByZIP("02116"); 
    DataSet ds = new DataSet(); 
    using (XmlNodeReader reader = new XmlNodeReader(node)) 
    { 
     ds.ReadXml(reader); 
    } 

    DataTable table = ds.Tables["Table"]; 
    DataRow row = table.Rows[0]; 
    string city = (string) row["CITY"]; 
    string state = (string) row["STATE"]; 
    string zip = (string) row["ZIP"]; 
}