2012-11-15 93 views
0

我已經創建了需要從SQL Server獲取數據的Windows應用程序。爲了做到這一點很容易我也有XML Web Service的,這裏是我用來返回DataSet中的代碼:從XML Web Service返回DataSet時出錯

`

[WebMethod] 
public DataSet GetDataSet(SqlCommand cmd) 
{ 
    using (SqlConnection Conn = new SqlConnection(ConnString)) 
    { 
     cmd.Connection = Conn; 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     try 
     { 
      //Conn.Open(); 
      using (DataSet DS = new DataSet()) 
      { 
       da.Fill(DS); 
       return DS; 
      } 
     } 
     catch (Exception ex) 
     { 
      return (new DataSet()); 
     } 
     finally 
     { 
      if (da != null) 
      { 
       da.Dispose(); 
      } 
     } 
    } 
} 

`

而當我想加入我的Web服務在我的Windows應用程序項目它提供了以下錯誤:

Cannot serialize member System.ComponentModel.Component.Site of type System.ComponentModel.ISite because it is an interface

任何建議將高度讚賞。

在此先感謝。

回答

1

的SqlCommand不能被序列化,所以你需要在函數實例。

[WebMethod] 
public DataSet GetDataSet() 
{ 
SqlCommand cmd = new SqlCommand(); 
using (SqlConnection Conn = new SqlConnection(ConnString)) 
{ 
    cmd.Connection = Conn; 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    try 
    { 
     //Conn.Open(); 
     using (DataSet DS = new DataSet()) 
     { 
      da.Fill(DS); 
      return DS; 
     } 
    } 
    catch (Exception ex) 
    { 
     return (new DataSet()); 
    } 
    finally 
    { 
     if (da != null) 
     { 
      da.Dispose(); 
     } 
    } 
    } 
} 
+0

那麼這是什麼答案?與有問題的代碼有什麼不同?我明白你的觀點,但需要一點點解釋。 –

+0

SqlCommand不能被序列化。因此你不能發送參數。 –

+0

然後將它寫入您的答案..... –