2009-09-23 57 views
0

我想調用SQL Server 2005中的一個存儲過程,該存儲過程返回一個XML字符串,然後可以將該字符串傳遞給另一個方法;我認爲下面的代碼是正確的,直到我在那裏執行查詢點,但隨後我得到一個有點失落......處理FOR XML PATH存儲過程的結果

private string GetChartData(string OC_Ttl1, string OC_OL31, string OC_OL32) 
{ 
    string chartData; 

    //Prepare Connection Variables 
    SqlConnection conn_Org = new SqlConnection(); 
    SqlCommand cmd_Org = new SqlCommand(); 

    //Open Connection 
    conn_Org.ConnectionString = Set_OrgChartConn(); 
    conn_Org.Open(); 

    //Execute Procedure 
    cmd_Org.Connection = conn_Org; 
    cmd_Org.CommandText = "dbo.usp_CreateOrgDataSet '" + OC_Ttl1 +"','" + OC_OL31 + "'.'" + OC_OL32 +"'"; 
    cmd_Org.CommandType = CommandType.StoredProcedure; 

    chartData = cmd_Org.ExecuteScalar(); 

    conn_Org.Close(); 

    return chartData; 
} 

任何想法?

+0

dbo.usp_CreateOrgDataSet做什麼? – 2009-09-23 09:48:48

+0

它返回一個XML字符串,我想傳入chartData以用於其他方法。 基本上它是這些行我沒有idead我在做什麼 cmd_Org.ExecuteReader(); chartData = cmd_Org(什麼去這裏?????) – MrBliz 2009-09-23 10:03:18

回答

1
cmd_Org.CommandText = "dbo.usp_CreateOrgDataSet '" + OC_Ttl1 +"','" + OC_OL31 + "'.'" + OC_OL32 +"'"; 
cmd_Org.CommandType = CommandType.StoredProcedure; 

上述行可能會導致錯誤。如果設置

cmd_Org.CommandType = CommandType.StoredProcedure; 

"dbo.usp_CreateOrgDataSet '" + OC_Ttl1 +"','" + OC_OL31 + "'.'" + OC_OL32 +"'" 

CommandText,那麼CommandText將被視爲存儲過程的名稱和錯誤

找不到存儲過程[dbo.usp_CreateOrgDataSet。 ...]

會發生。

您只能將dbo.usp_CreateOrgDataSet設置爲CommandText並通過例如參數傳遞參數。

mycommand.Parameters.AddWithValue('@param1', OC_Ttl1); 
mycommand.Parameters.AddWithValue('@param2', OC_OL31); 
mycommand.Parameters.AddWithValue('@param3',OC_OL32); 

cmd_Org.CommandType = CommandType.StoredProcedure; 
chartData = cmd_Org.ExecuteScalar(); 
+0

非常感謝。關於「@param(x)」引用Visual Studio首選雙引號 – MrBliz 2009-09-23 13:38:47

0

您能不能直接致電cmd_Org.ExecuteScalar()

+0

我會給它一個破解 – MrBliz 2009-09-23 10:04:59