C# 在c中执行存储过程N次#
我有一个名为“VehicleCamp”的存储过程,该存储过程将数据插入此表:C# 在c中执行存储过程N次#,c#,sql-server,stored-procedures,arraylist,C#,Sql Server,Stored Procedures,Arraylist,我有一个名为“VehicleCamp”的存储过程,该存储过程将数据插入此表: +---------------------+-----+-------------+--------------+-----------+-----------------+ | id_campaing_control | vin | campaing_id | id_workorder | id_client | campaing_status | +---------------------+-----+----
+---------------------+-----+-------------+--------------+-----------+-----------------+
| id_campaing_control | vin | campaing_id | id_workorder | id_client | campaing_status |
+---------------------+-----+-------------+--------------+-----------+-----------------+
| | | | | | |
+---------------------+-----+-------------+--------------+-----------+-----------------+
| | | | | | |
+---------------------+-----+-------------+--------------+-----------+-----------------+
这是存储过程的代码:
CREATE PROCEDURE VehicleCamp(
@vin VARCHAR(100), @id_camp int, @workorder varchar (100), @id_client int, @status varchar(64)
)
AS
BEGIN
SET NOCOUNT ON;
IF(@id_client IS NULL)
BEGIN
INSERT INTO vehicle_campaing (vin,campaing_id,id_workorder,campaing_status) values( @vin, @id_camp, @workorder, @status);
END
ELSE
BEGIN
INSERT INTO vehicle_campaing (vin,campaing_id,id_workorder,id_client,campaing_status) values( @vin, @id_camp, @workorder, @id_client, @status);
END
END
我需要在C#中执行这个存储过程,根据车辆的数量,车辆可以是N个车辆
我将车辆的VIN编号保存在ArrayList中,但我不知道如何执行存储过程N次,以及如何将@VIN参数分配给ArrayList中的每个元素
这是我的C#代码:
不要害怕问你需要什么。如果你的数据访问代码没有直接从你的用户界面读取字段,这会更容易 首先,您可以创建如下类:
public class VehicleCamp
{
public string Vin {get;set;}
public int IdCamp {get;set;}
public string WorkOrder {get;set;}
public string IdClient {get;set;}
public string Statis {get;set;}
}
最好有一个单独的类来插入记录,这样每个类都有一个单独的职责。但现在,您可以修改您的方法:
public void InsertVinCamp(VehicleCamp vinCamp) // guessing at names
{
...
现在,您的InsertVinCamp
方法正在从传递给它的参数中获取其值。它不是从UI字段读取。这样,每种方法只需做一件事。一个方法从表单中读取值。另一个方法不知道值来自何处——它只是插入传递给它的内容
现在,您可以为每个要插入的记录构建VehicleCamp
的实例
var vc = new VehicleCamp
{
IdCamp = Int32.Parse(camp.Text),
WorkOrder = label11.Text + folio.Text + year.Text,
// etc.
}
如果你有一个VIN列表,你可以这样做(我使用的是列表
,而不是数组列表
)
public void insertvehicleewithmultiplevin(车辆放大器车辆,列出VIN)
{
foreach(vin中的var vin)
{
车辆识别号=车辆识别号;
插入式放大器(车辆);
}
}
var vc = new VehicleCamp
{
IdCamp = Int32.Parse(camp.Text),
WorkOrder = label11.Text + folio.Text + year.Text,
// etc.
}
public void InsertVehicleWithMultipleVins(VehicleCamp vehicle, List<string> vins)
{
foreach(var vin in vins)
{
vehicle.Vin = vin;
InsertVinCamp(vehicle);
}
}