到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;
}
}
你永遠不會執行你的命令。 – 2015-01-15 15:14:26
你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)並停止使用'.AddWithValue()' - 它可能會導致意想不到的和令人驚訝的結果... – 2015-01-15 15:16:11
@Golden Dragon,[facepalm]謝謝,這是瘋狂的,你完全監督10小時以上的最小細節。感謝幫助!!! – Gmac 2015-01-15 15:17:02