必须在脚本任务中声明标量变量“@ID”错误,C#、SSIS

问题描述 投票:0回答:1

这让我抓狂。可能这是我看不到的愚蠢的东西。

这是我的代码:

cnnDbLocal = new OleDbConnection(localDbStringConnection);
cnnDbLocal.Open();
string select = "INSERT INTO Estimate (EstimateID) VALUES (@IdVal);";
using (OleDbCommand command = new OleDbCommand(select, cnnDbLocal)) { 
    command.Parameters.AddWithValue("@IdVal", 1);
    rowsAffected = command.ExecuteNonQuery();
}

我不断收到错误:{“必须声明标量变量“@IdVal”。”}

我不敢相信我无法弄清楚这一点。我尝试使用 Add() 方法,但显然它已被弃用。

我不认为这是数据库问题,但代码还是在这里:

CREATE TABLE [dbo].[Estimate](
    [EstimateID] [int] NULL,
    [Name] [varchar](50) NULL,
    [Description] [varchar](200) NULL,
    [Weight] [float] NULL,
    [FacilityID] [smallint] NULL,
    [JDEFacility] [smallint] NULL,
    [FabricationHours] [float] NULL,
    [CreatedOn] [datetime] NULL
) ON [PRIMARY]
GO

谢谢你让我睁开眼睛,今天下午我很沮丧。

c# sql ssis insert script-task
1个回答
0
投票

OleDB 不支持命名参数。您需要使用

?
并按正确的顺序传递参数。调整如下。

Using (OleDbConnection db = new OleDbConnection(localDbStringConnection)) {
    db.Open();
    using (OleDbCommand cmd = new OleDbCommand()) {
        cmd.commandText = "INSERT INTO Estimate (EstimateID) VALUES (?);";
        cmd.connection = db;
        cmd.Parameters.Add("@IdVal", OleDbType.Integer).value = 1;
        rowsAffected = cmd.ExecuteNonQuery();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.