我设置了一个数字主键和一个存储卡车 FINS 的字母数字字段,它只是数字和字母的随机组合。我不生成鳍片,这些鳍片将始终与卡车车队识别号相同。
这是代码视图:
storeTruckSplit = truckSplit[1];//Stores truck FIN
//Update truck value
try
{
conn.Open();
OleDbCommand command;
command = new OleDbCommand(
"Update Trucks" +
" SET Trucks.TruckInUse = ? WHERE TFIN = " + storeTruckSplit.ToString(), conn);
command.Parameters.Add(new OleDbParameter("@use", "T"));
command.ExecuteNonQuery();//Commit
conn.Close();
}
catch (OleDbException exception)
{
MessageBox.Show(exception.Message, "OleDb Exception");
}
这是表视图:
CREATE TABLE Trucks
(
TruckID number(9) CONSTRAINT TRUCK_PK PRIMARY KEY,
TFIN char(9) NOT NULL,
TruckCategory varchar(80) NOT NULL,
TruckCodeName varchar(50) NOT NULL,
MaxWeight number(10) NOT NULL,
TruckSize number(10) NOT NULL,
TruckInUse varchar(1) NULL
);
在该表上插入之前还有一个序列和触发器TRUCKID
.
我正进入(状态ORA-00904
并注意这是显示C6977734D
这是一个卡车鳍,用于更新的 where 子句。
确切消息:
“处理命令期间发生一个或多个错误。ORA-00904:“C6977734D”:标识符无效。
使TFIN
也对参数进行赋值:
command = new OleDbCommand(
"Update Trucks" +
" SET Trucks.TruckInUse = ? WHERE TFIN = ?", conn);
command.Parameters.Add(new OleDbParameter("@use", "T"));
command.Parameters.Add(new OleDbParameter("@tfin", storeTruckSplit));
command.ExecuteNonQuery();//Commit
就目前情况而言,您没有在要过滤的值周围加上引号,因此查询将其视为标识符(字段、变量等)而不是常量值。由于您已经使用了“使用中”值的参数(这不是必需的,因为您提供了常量值),因此最好的解决方法是也使用过滤器的参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)