2015-01-15 45 views
0

到DB我曾經有dataContracts並使得工作完全正常插入數據到數據庫,這是代碼服務:數據未插入,通過WCF

public string InsertDetails(DeviceDetails deviceInfo) 
    { 
     using (SqlConnection con = new SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=vurdevice;Integrated Security=True")) 
     { 
      string Message; 
      con.Open(); 
      SqlCommand cmd = new SqlCommand(@"INSERT INTO VR_Image (IMEINo, FileName, FileURL, Uploader, CarrierID, StorageName, FileSize, CreateDate) 
              values (@IMEINo, @FileName, @FileURL, @Uploader, @CarrierID, @StorageName, @FileSize, @CreateDate)", con); 

      cmd.Parameters.AddWithValue("@IMEINo", deviceInfo.IMEINo); 
      cmd.Parameters.AddWithValue("@FileName", deviceInfo.FileName); 
      cmd.Parameters.AddWithValue("@FileURL", deviceInfo.FileURL); 
      cmd.Parameters.AddWithValue("@Uploader", deviceInfo.Uploader); 
      cmd.Parameters.AddWithValue("@CarrierID", deviceInfo.CarrierID); 
      cmd.Parameters.AddWithValue("@StorageName", deviceInfo.StorageName); 
      cmd.Parameters.AddWithValue("@FileSize", deviceInfo.FileSize); 
      cmd.Parameters.AddWithValue("@CreateDate", deviceInfo.CreateDate); 

      int result = cmd.ExecuteNonQuery(); 
      if (result == 1) 
      { 
       Message = deviceInfo.IMEINo + " Details inserted successfully"; 
      } 
      else 
      { 
       Message = deviceInfo.IMEINo + " Details not inserted successfully"; 
      } 
      con.Close(); 
      return Message; 
     } 
    } 

我現在已經改變了服務才能在來自客戶端的數據集中(客戶端應用程序和服務在此處進行控制,因此即使DataSet不能順利運行,但由於我們的用戶數量有限,因此它仍然有效)。我只有一個OperationContract的將處理所有數據集進來,並將它們分配給它需要去特定的功能,這是代碼是什麼樣子的OperationContract的功能:

public DataSet InterfaceService(string sInterface, DataSet dsIn) 
    { 
     System.Data.DataSet dsClean = new System.Data.DataSet(); 
     try 
     { 
      MethodInfo oMethod = null; 
      oMethod = this.GetType().GetMethod(sInterface); 
      System.Data.DataSet dsOut = (System.Data.DataSet)oMethod.Invoke(this, new object[] { dsIn }); 
      dsClean.Merge(dsOut); 
     } 
     catch (Exception ex) 
     { 
      throw new FaultException(ex.Message, new FaultCode("An error has occurred. Please try again.")); 
     } 
     return dsClean; 
    } 

而這正是新插入函數看起來像,我無法弄清楚爲什麼數據不再被插入到數據庫中?!?!?!?

public DataSet InsertDetails(DataSet dsIn) 
    { 
     DataSet1.InsertInfoDataTable ds = new DataSet1.InsertInfoDataTable(); 
     ds.Merge(dsIn.Tables["InsertInfo"]); 
     DataSet1.InsertInfoRow dr = ds.First(); 

     using (SqlConnection con = new SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=vurdevice;Integrated Security=True")) 
     { 
      con.Open(); 
      SqlCommand cmd = new SqlCommand(@"INSERT INTO VR_Image (IMEINo, FileName, FileURL, Uploader, CarrierID, StorageName, FileSize, CreateDate) 
              VALUES (@IMEINo, @FileName, @FileURL, @Uploader, @CarrierID, @StorageName, @FileSize, @CreateDate)", con); 

      cmd.Parameters.AddWithValue("@IMEINo", dr.IMEINo); 
      cmd.Parameters.AddWithValue("@FileName", dr.FileName); 
      cmd.Parameters.AddWithValue("@FileURL", dr.FileURL); 
      cmd.Parameters.AddWithValue("@Uploader", dr.Uploader); 
      cmd.Parameters.AddWithValue("@CarrierID", dr.CarrierID); 
      cmd.Parameters.AddWithValue("@StorageName", dr.StorageName); 
      cmd.Parameters.AddWithValue("@FileSize", Convert.ToInt32(dr.FileSize)); 
      cmd.Parameters.AddWithValue("@CreateDate", Convert.ToDateTime(dr.CreateDate)); 
      con.Close(); 
      return dsIn; 
     } 
    } 
+2

你永遠不會執行你的命令。 – 2015-01-15 15:14:26

+1

你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)並停止使用'.AddWithValue()' - 它可能會導致意想不到的和令人驚訝的結果... – 2015-01-15 15:16:11

+0

@Golden Dragon,[facepalm]謝謝,這是瘋狂的,你完全監督10小時以上的最小細節。感謝幫助!!! – Gmac 2015-01-15 15:17:02

回答

1

你的第一個代碼段包含一個調用來執行你的命令,但第二個代碼段沒有。在關閉它之前添加一個調用來執行你的sql命令。

cmd.Parameters.AddWithValue("@CreateDate", Convert.ToDateTime(dr.CreateDate)); 
int result = cmd.ExecuteNonQuery(); // This line is missing 
con.Close(); 
+0

在那裏有一個腦袋,謝謝! – Gmac 2015-01-15 15:30:20