Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中执行存储过程N次#_C#_Sql Server_Stored Procedures_Arraylist - Fatal编程技术网

C# 在c中执行存储过程N次#

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 | +---------------------+-----+----

我有一个名为“VehicleCamp”的存储过程,该存储过程将数据插入此表:

+---------------------+-----+-------------+--------------+-----------+-----------------+
| 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);
    }
}