Reputation: 3914
My primary coding ideal is on .net applications.. So I have limited skill with application design.
I am trying to export an entire table from a database (Using a view) to an XML file (To then hopefully export that to a spreadsheet - I've looked and fail to find a direct way).
I have successfully exported only 1 column to the xml file, using this code:
DataConn.UserName = "***";
DataConn.Password = "***";
DataConn.SqlServer = "***";
DataConn.Database = "***";
const string strSql = "SELECT TOP 1 * FROM vwGetStaffDetails FOR XML AUTO";
using (SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text })
{
string result = sqlComm.ExecuteScalar().ToString();
File.WriteAllText(@"C:\Temp\text.xml", result);
}
Whenever I use ExecuteReader
or ExecuteXmlReader
, I don't get any actual results.
How would I get all the fields?
Edit: I had to use Top 1
to get the Execute Scalar
working well.
Using the below solution, my file shows:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<XML_F52E2B61-18A1-11d1-B105-00805F49916B><vwGetStaffDetails ImageLoc="****.jpg" LName="GAINES" FName="****" StaffTitle="****" JobPosition="****" Email="***@***.com" Code="***" Number="******" PhoneTypeID="1"/></XML_F52E2B61-18A1-11d1-B105-00805F49916B>
</Table>
</NewDataSet>
It's writing <
etc instead of proper XML. Is the any way to fix it?
Upvotes: 5
Views: 14832
Reputation: 2361
You can use a SqlDataAdapter
and System.Data.DataSet
to load a DataTable
, which will write to XML.
const string strSql = "SELECT * FROM vwGetStaffDetails";
using (SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text })
{
SqlDataAdapter da = new SqlDataAdapter(sqlComm);
DataSet ds = new DataSet();
da.Fill(ds);
ds.Tables[0].WriteXml(@"C:\Temp\text.xml");
}
Edit Using this method you'll remove the XML code from SQL and let .NET convert everything. I've changed your SQL command to reflect this.
Upvotes: 8
Reputation: 1079
You might want to take a look at how you can write queries which output is XML.
There are many examples and tutorials around on the internet about this.
this http://msdn.microsoft.com/en-us/library/bb510462.aspx is one of them.
If i am not mistaken the output returned should be a string with the complete XML stuff inside of it.
Upvotes: 0