我想插入使用具有兩個表的存儲過程的數據參數。這第一個表是數據是通過文本框的第二個數據是通過一個網格,我存儲在數據庫中並傳遞給插入。問題是當讀取數據表並插入它時,說有太多的參數發生在for循環中。任何建議如何處理這個SP?提前致謝。使用存儲過程來插入數據表自
CODE:
try
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = strConnection;
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 120;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "insFamilyDetails";
cmd.Parameters.AddWithValue("@strHusbandName", strHusbandName);
cmd.Parameters.AddWithValue("@strRelation", strRelation);
....
....
// Child Details
for (int i = 0; i < strChildredDetails.Rows.Count; i++)
{
cmd.Parameters.AddWithValue("@strChildName", strChildredDetails.Rows[i][0].ToString());
cmd.Parameters.AddWithValue("@strDOB", strChildredDetails.Rows[i][1]);
cmd.Parameters.AddWithValue("@strBaptisedon", strChildredDetails.Rows[i][2]);
cmd.Parameters.AddWithValue("@strFirstComOn", strChildredDetails.Rows[i][3]);
cmd.Parameters.AddWithValue("@strConfirmedOn", strChildredDetails.Rows[i][4]);
cmd.Parameters.AddWithValue("@strMarried", "0");
cmd.Parameters.AddWithValue("@strAlive", "1");
}
conn.Open();
ReturnValue = Convert.ToBoolean(cmd.ExecuteNonQuery());
conn.Close();
}
catch (Exception e)
{
DL_LogAppErrors(e.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, "Insert Family Details");
return ReturnValue;
}
return ReturnValue;
我試過這種方式,它作品,但我發現是說,如果主表數據插入和子數據失敗,那麼就有問題。所以在SP中,我添加了一個事務並回滾,如果其中任何一個失敗了 – Adrian
那麼你是否說你創建了一個SP來將數據輸入到這兩個表(主和子)? – Ruly
是的。在單個SP中有兩個插入語句。如果主服務器出現故障,它將不會插入到子服務器中,如果子服務器也出現故障,事務處理將回滾。不確定這是否是正確的方法,有什麼建議? – Adrian