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 回答