Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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#SQL存储过程Id问题_C#_Sql_Bulk - Fatal编程技术网

c#SQL存储过程Id问题

c#SQL存储过程Id问题,c#,sql,bulk,C#,Sql,Bulk,我的存储过程不能像我想象的那样工作,我不知道如何修复它。使用SQLServerManagementStudio 2008 这是存储值的位置: SELECT * FROM [Events].[dbo].[Fouten] where TreinId = 1338 然而,“1338”是Treinen表中的一个字段的名称,该字段通过TreinId链接到Fouten表。例如:TreinId=136,Name='1338' 因此,我尝试插入name字段并从另一个表中检索Id,以便将结果输入: SELE

我的存储过程不能像我想象的那样工作,我不知道如何修复它。使用SQLServerManagementStudio 2008

这是存储值的位置:

SELECT *
  FROM [Events].[dbo].[Fouten] where TreinId = 1338
然而,“1338”是Treinen表中的一个字段的名称,该字段通过TreinId链接到Fouten表。例如:TreinId=136,Name='1338'

因此,我尝试插入name字段并从另一个表中检索Id,以便将结果输入:

SELECT *
      FROM [Events].[dbo].[Fouten] where TreinId = 136
存储过程(microsoft sql manager 2008):

c#代码:


您应该能够执行
SELECT
以输入
INSERT
语句,而不是试图将其强制输入
VALUES
语法:

INSERT INTO dbo.Fouten 
(Datum,FoutCode,Omschrijving,Module,Time,Teller,Mnemo,TreinId)
SELECT
    @Datum,
    @Foutcode,
    @Omschrijving,
    @Module,
    @Time,
    @Teller,
    @Mnemo,
    TreinId from [Events].[dbo].[Treinen]
WHERE
    Name = @treinNaam;

如果您的RDBMS具有检索表的最新插入的自动增量编号的功能,那么它将变得更加容易。

听起来您需要一个简单的
连接
。使用标记dbms。(该sp代码是特定于产品的。)它仍然使用名称作为TreinId,而不是使用与名称匹配的TreinId:(可能是因为这一部分?sbc.ColumnMappings.Add(“treinNaam”,“TreinId”);嗯,是的……如果将名称的值放入ID参数中,那么这将是一个问题。
public void BatchBulkCopy(string rapport)
        {
            // Get the DataTable 
            DataTable dtInsertRows = TextReader(rapport);

            using (SqlBulkCopy sbc = new SqlBulkCopy(GetConnectionString(), SqlBulkCopyOptions.CheckConstraints))
            {
                sbc.DestinationTableName = "dbo.Fouten";
                sbc.BatchSize = 8000;


                sbc.ColumnMappings.Add("Datum", "Datum");
                sbc.ColumnMappings.Add("Foutcode", "FoutCode");
                sbc.ColumnMappings.Add("Omschrijving", "Omschrijving");
                sbc.ColumnMappings.Add("Module", "Module");
                sbc.ColumnMappings.Add("Time", "Time");
                sbc.ColumnMappings.Add("Teller", "Teller");
                sbc.ColumnMappings.Add("Mnemo", "Mnemo");
                sbc.ColumnMappings.Add("treinNaam", "TreinId");

                sbc.NotifyAfter = dtInsertRows.Rows.Count;
                sbc.SqlRowsCopied += new SqlRowsCopiedEventHandler(sbc_SqlRowsCopied);

                try
                {
                    sbc.WriteToServer(dtInsertRows);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message.ToString());
                }
                sbc.Close();
            }

        }
INSERT INTO dbo.Fouten 
(Datum,FoutCode,Omschrijving,Module,Time,Teller,Mnemo,TreinId)
SELECT
    @Datum,
    @Foutcode,
    @Omschrijving,
    @Module,
    @Time,
    @Teller,
    @Mnemo,
    TreinId from [Events].[dbo].[Treinen]
WHERE
    Name = @treinNaam;