2010-09-17 54 views
2

我打电话的SQL服务器上的存储过程是这样的:调用存储过程返回任何

SqlConnection conn = new SqlConnection(); 
SqlCommand cmd; 
XmlDocument xmlDocument; 
XmlReader xr; 
XmlNode node; 
SqlDataReader rdr = null; 

try 
{ 
    xmlDocument = new XmlDocument(); 
    conn.ConnectionString = "Data Source=test;Initial Catalog=teste;Integrated Security=SSPI;"; 
    cmd = new SqlCommand(); 
    cmd.Connection = conn; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "[dbo].[spSearchKeywords]"; 

    cmd.Parameters.Add(new SqlParameter("@VALUE", "XPT")); 

    conn.Open(); 

    xr = cmd.ExecuteXmlReader(); 

    conn.Close(); 
    node = xmlDocument.ReadNode(xr); 
} 

及其连接和执行命令,但它没有返回 有数据返回和参数是否正确(当我用同样的参数调用SQL程序返回我的结果)

这里是PROC:

ALTER PROCEDURE [dbo].[spSearchKeywords] 
(
    @VALUE     NVARCHAR(50) = NULL, 
    @ACCOUNTGROUPID   NVARCHAR(50) = NULL, 
    @ShortCodeId   NVARCHAR(50) = NULL, 
    @VALUETYPE    NVARCHAR(50) = NULL, 
    @ASSEMBLY    NVARCHAR(100) = NULL, 
    @ASSEMBLYCONTAINSURI NCHAR (10) = NULL, 
    @ASSEMBLYTYPE   NVARCHAR(50) = NULL 
) 
AS 
BEGIN 

    SET NOCOUNT ON; 

    SELECT [Value] 
      ,[AccountGroupId] 
      ,[ShortCodeId] 
      ,[ValueType] 
      ,[assembly] 
      ,[assemblyContainsUri] 
      ,[assemblyType] 
     FROM [teste].[dbo].[keywords] 
    WHERE [Value]     = ISNULL(@VALUE,    [Value]) 
     AND [AccountGroupId]   = ISNULL(@ACCOUNTGROUPID,  [AccountGroupId]) 
     AND [ShortCodeId]   = ISNULL(@SHORTCODEID,   [ShortCodeId]) 
     AND [ValueType]    = ISNULL(@VALUETYPE,   [ValueType]) 
     AND [assembly]    = ISNULL(@ASSEMBLY,   [assembly]) 
     AND [assemblyContainsUri] = ISNULL(@ASSEMBLYCONTAINSURI, [assemblyContainsUri]) 
     AND [assemblyType]   = ISNULL(@ASSEMBLYTYPE,  [assemblyType]) 
    FOR XML AUTO 
END 
+3

为什么使用XML? – SLaks 2010-09-17 17:14:49

+0

我同意SLaks。 XML和SQL服务器是两件事情,它们本来就不应该是“集成的”。 – NotMe 2010-09-17 17:22:34

回答

8

则无法关闭在实际使用XmlReader之前进行连接。尝试将conn.Close()放在node = xmlDocument.ReadNode(xr);以下。并考虑您的一次性数据库对象的using声明。

+1

我也在考虑这些方面。感到惊讶的是,在这种情况下也不例外。 – 2010-09-17 17:14:38

+1

大声笑,我知道这真是个白痴,谢谢你! – yuneyev 2010-09-17 17:16:47

+0

@Kirk Woll:你会抛出什么异常? – NotMe 2010-09-17 17:23:18