我經(jīng)常不得不將多個(gè)項(xiàng)目加載到數(shù)據(jù)庫(kù)中的特定記錄。例如:網(wǎng)頁(yè)顯示要包含在單個(gè)報(bào)告中的項(xiàng)目,所有項(xiàng)目都是數(shù)據(jù)庫(kù)中的記錄(“報(bào)告”是“報(bào)告”表中的記錄,“項(xiàng)目”是“項(xiàng)目”表中的記錄)。用戶正在通過(guò)網(wǎng)絡(luò)應(yīng)用程序選擇要包含在單個(gè)報(bào)告中的項(xiàng)目,假設(shè)他們選擇了3個(gè)項(xiàng)目并提交。該過(guò)程將通過(guò)將記錄添加到稱為ReportItems(ReportId,ItemId)的表中來(lái)將這3個(gè)項(xiàng)目添加到此報(bào)告中。目前,我將在代碼中執(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);}在存儲(chǔ)過(guò)程中:INSERT INTO ReportItem (ReportId,ItemId)SELECT @ReportId, IdFROM fn_GetIntTableFromList(@Items,'~')該函數(shù)返回一列整數(shù)表。我的問(wèn)題是:有沒(méi)有更好的方法來(lái)處理這樣的事情?注意,我不是在問(wèn)數(shù)據(jù)庫(kù)規(guī)范化之類的問(wèn)題,我的問(wèn)題專門與代碼有關(guān)。
將List <>傳遞給SQL存儲(chǔ)過(guò)程
慕容3067478
2019-11-30 14:40:12