5

私の主なコーディングの理想は .net アプリケーションです。そのため、アプリケーション設計のスキルは限られています。

データベース(ビューを使用)からXMLファイルにテーブル全体をエクスポートしようとしています(それをスプレッドシートにエクスポートすることを願っています-私は見て、直接的な方法を見つけられませんでした)。

次のコードを使用して、1 列のみを xml ファイルに正常にエクスポートしました。

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

ExecuteReaderまたはを使用するたびにExecuteXmlReader、実際の結果が得られません。

すべてのフィールドを取得するにはどうすればよいですか?

編集:うまく機能させるために使用するTop 1必要がありExecute Scalarました。

以下のソリューションを使用すると、私のファイルは次のように表示されます。

<?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>

&lt;適切なXMLの代わりにetcを書いています。それを修正する方法はありますか?

4

2 に答える 2

7

SqlDataAdapterとを使用して、XML に書き込む をSystem.Data.DataSetロードできます。DataTable

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

編集このメソッドを使用すると、SQL から XML コードを削除し、.NET にすべてを変換させます。これを反映するように SQL コマンドを変更しました。

于 2012-11-02T12:19:56.267 に答える
0

出力が XML であるクエリを作成する方法を確認することをお勧めします。
これについては、インターネット上に多くの例とチュートリアルがあります。このhttp://msdn.microsoft.com/en-us/library/bb510462.aspxはその 1 つです。

私が間違っていなければ、返される出力は完全な XML を含む文字列でなければなりません。

于 2012-11-02T12:25:09.100 に答える