0

私は次のコードを持っています:

public string GetClients()
    {
        string outputxml = string.Empty;
        Database db = DatabaseFactory.CreateDatabase("MyDatabase");
        SqlCommand sqlcmd = db.GetSqlStringCommand("SELECT CLIENTID, CLIENTNAME FROM [CLIENTS] FOR XML AUTO, ELEMENTS") as SqlCommand;
        using (XmlReader reader = sqlcmd.ExecuteXmlReader()) //Exception thrown in this line
        {
            while (reader.Read())
            {
                outputxml = reader.ReadOuterXml();
            }
            return outputxml;
        }
    }

この方法は、私がWCFセルフチュータリングの一部として行っている演習の一部です。

WCFクライアントアプリケーションからこのメソッドを呼び出すと、この投稿の件名に記載されているエラーが上記の場所で発生します。データベースへの接続文字列は、MyDatabaseの構成ファイルで指定され、デフォルトデータベースとしても設定されます。

私はここで間違って何をしていますか?SOFコミュニティに感謝します。

4

2 に答える 2

0

基になる接続状態を確認しようとしましたか?そこから開くこともできます。

あなたが持っている:

   SqlCommand sqlcmd = db.GetSqlStringCommand("SELE..") as SqlCommand

次のコマンドでコマンドをテストできます。

(sqlcmd.Connection.State == ConnectionState.Open)

接続を直接開くこともできます。

sqlcmd.Connection.Open(); 
于 2012-03-02T20:03:21.940 に答える
0

@t3rseに感謝します。何が悪いのかわかりました。これが書き直された同じコードです:

 public string GetClients()    
{         
string outputxml = string.Empty;         
Database db = DatabaseFactory.CreateDatabase("MyDatabase");         
SqlCommand sqlcmd = db.GetSqlStringCommand("SELECT CLIENTID, CLIENTNAME FROM [CLIENTS] FOR XML AUTO, ELEMENTS") as SqlCommand;         
using (XmlReader reader = db.ExecuteXmlReader(sqlcmd)) 
{             
  while (reader.Read())             
  {                 
    outputxml = reader.ReadOuterXml();             
  }             
return outputxml;         
}
} 
于 2012-03-02T20:05:56.437 に答える