这让我抓狂。可能这是我看不到的愚蠢的东西。
这是我的代码:
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
谢谢你让我睁开眼睛,今天下午我很沮丧。
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();
}
}