2009-03-06 13 views
0

URLをクリックするだけで、SQL Serverのxml列の内容をクライアントに返す必要があります。 xmlには正しいアプリケーション(この場合はInfopath)を開く処理命令があります。SQL ServerからクライアントにXMLを出力する最も簡単な方法

私は、利用可能なさまざまなxmlreaderライターとストリームについて、少し混乱しています。私は、SQLのExecuteXmlReaderの内容をResponse.OutputStreamに送信したいと思いますが、一緒に接続する方法は不明です。

おかげで、私はその後、動的にページを作成し、テキストとして、データベースからXMLを取得示唆し、「アプリケーション/ XML」をヘッダにMIMEタイプを設定します事前

+0

が、これはASP.NETとSQL Server> = 2005を参照 – Tomalak

答えて

0

xmlをテキストとしてResponse.Writeを使用するだけで動作しますが、実際にXmlReadersとストリームを使用する必要があるかどうかはまだ分かりません。ここに私がやったことだ:それのルックスによって

SqlCommand cmd = conn.CreateCommand(); 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = "select Name, InfopathDoc from document where id = @id"; 
cmd.Parameters.AddWithValue("@id", docId); 

using (SqlDataReader dr = cmd.ExecuteReader()) 
{ 
    if (dr.Read()) 
    { 
     Response.ContentType = "application/xml"; 
     Response.AppendHeader("Content-disposition", "attachment; filename=" + dr["Name"]); 
     Response.Write(dr["InfopathDoc"]); 
    } 
0

です。これにより、ブラウザにDTRTが正しく設定されていることが伝えられます。

Webアプリケーションで作業していない場合は、REを使用してテキストを解析し、起動するアプリケーションを決定し、XMLにフィードします(一時ファイルを使用するか、いくつかのタイプ)。

XMLとSQL Serverを超えて使用しているテクノロジは何も分かっていないので、実際には具体的ではありません。

0

XML列の内容に対して標準SQLを使用してデータベースにクエリを実行し、ページ内の標準SQLを取得してその文字列をユーザーに戻すのはなぜですか。

ような何か:

string xmlContents = string.Empty; 

using(SqlConnection _con = new SqlConnection("server=(local);database=Northwind;Integrated Security=SSPI;") 
{ 
    string queryStatement = "SELECT XmlColumn FROM dbo.MyTable WHERE id = @ID"; 

    using(SqlCommand _cmd = new SqlCommand(queryStatement, _con) 
    { 
    _cmd.Parameters.AddWithValue("@ID", 5555); 

    _con.Open(); 

    xmlContents = _cmd.ExecuteScalar().ToString(); // returns an object 
    _con.Close(); 
    } 
} 

してからちょうど例えば、ユーザーにXMLをバックストリームResponse.Write(xmlContents)を使用して - それらの行に沿って何か(エラー処理は含まれません - 私はそれを処理するために残します:-))。

マルク・

0

SQL 2005およびサポートを超えFOR XML声明。例えばhere

を参照してください:

SELECT * FROM MyTable FOR XML RAW; 

同様datrabase列を異なるようにXMLのタグ名を微調整するための他のキーワードがあります。

次に、C#で使用するCommandクラスのExecuteXmlReaderドキュメントを参照してください。

+0

うーん...それは大丈夫です、あなたは、リレーショナル・データを選択して、XMLとしてそれを表示したい場合は(そして本当にうまくいく)。しかし、ここでの質問は、すでにSQL ServerのXML列にあるデータに関するものです。 –

関連する問題