我經(jīng)常不得不將多個項目加載到數(shù)據(jù)庫中的特定記錄。例如:網(wǎng)頁顯示要包含在單個報告中的項目,所有項目都是數(shù)據(jù)庫中的記錄(“報告”是“報告”表中的記錄,“項目”是“項目”表中的記錄)。用戶正在通過網(wǎng)絡(luò)應(yīng)用程序選擇要包含在單個報告中的項目,假設(shè)他們選擇了3個項目并提交。該過程將通過將記錄添加到稱為ReportItems(ReportId,ItemId)的表中來將這3個項目添加到此報告中。目前,我將在代碼中執(zhí)行以下操作:public void AddItemsToReport(string connStr, int Id, List<int> itemList){ Database db = DatabaseFactory.CreateDatabase(connStr); string sqlCommand = "AddItemsToReport" DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand); string items = ""; foreach (int i in itemList) items += string.Format("{0}~", i); if (items.Length > 0) items = items.Substring(0, items.Length - 1); // Add parameters db.AddInParameter(dbCommand, "ReportId", DbType.Int32, Id); db.AddInParameter(dbCommand, "Items", DbType.String, perms); db.ExecuteNonQuery(dbCommand);}在存儲過程中:INSERT INTO ReportItem (ReportId,ItemId)SELECT @ReportId, IdFROM fn_GetIntTableFromList(@Items,'~')該函數(shù)返回一列整數(shù)表。我的問題是:有沒有更好的方法來處理這樣的事情?注意,我不是在問數(shù)據(jù)庫規(guī)范化之類的問題,我的問題專門與代碼有關(guān)。
將List <>傳遞給SQL存儲過程
慕容3067478
2019-11-30 14:40:12