2012-11-02 21 views
5

Moje podstawowe kodowanie jest idealne w aplikacjach .net. Mam ograniczone umiejętności w zakresie projektowania aplikacji.Jak wyeksportować pełną tabelę SQL do XML

Próbuję wyeksportować całą tabelę z bazy danych (Korzystanie z widoku) do pliku XML (aby następnie, mam nadzieję, wyeksportować go do arkusza kalkulacyjnego - szukałem i nie udało się znaleźć bezpośredniego sposobu).

Mam powodzeniem eksportowane tylko 1 kolumnę w pliku xml, przy użyciu tego kodu:

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

Ilekroć używam ExecuteReader lub ExecuteXmlReader, nie otrzymuję żadnych rzeczywistych wyników.

Jak uzyskać wszystkie pola?

Edit: musiałem użyć Top 1 uzyskać Execute Scalar działa dobrze.

Stosując rozwiązania poniżej mój plik pokazuje:

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <Table> 
    <XML_F52E2B61-18A1-11d1-B105-00805F49916B>&lt;vwGetStaffDetails ImageLoc="****.jpg" LName="GAINES" FName="****" StaffTitle="****" JobPosition="****" Email="***@***.com" Code="***" Number="******" PhoneTypeID="1"/&gt;</XML_F52E2B61-18A1-11d1-B105-00805F49916B> 
    </Table> 
</NewDataSet> 

To pisanie &lt; etc zamiast prawidłowego XML. Czy jest jakiś sposób to naprawić?

Odpowiedz

7

Możesz użyć SqlDataAdapter i System.Data.DataSet, aby załadować DataTable, który zapisze w 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 Korzystając z tej metody musisz usunąć kod XML z SQL i pozwól .NET konwertować wszystko. Zmieniłem twoje polecenie SQL, aby to odzwierciedlić.

+0

Działa niesamowicie! ale .. Sprawdź moją edycję. – TheGeekZn

+0

Właśnie edytowałem moją odpowiedź, jeśli chcesz użyć tej metody, usuń przetwarzanie XML z SQL i pozwól .NET konwertować wszystko. –

+0

Twoje zdumiewające: D Dzięki człowieku .. Mam nadzieję, że to pomoże każdemu, kto szuka odpowiedzi. – TheGeekZn

Powiązane problemy