试图将NULL传递给时间戳字段时出错
本文关键字:时间戳 字段 出错 NULL | 更新日期: 2023-09-27 18:10:56
我正在尝试从SQL Server表中插入记录到Access表。
对于SQL Server表中的每一行,我正在检查一个条件,如果时间戳字段是NULL,那么在相应的访问字段中插入NULL。
粘贴一小段代码:
foreach (DataRow dr in dra) //Each datarow in SQL Server table
{
OleDbCommand accessCmdUpdate = new OleDbCommand("update xxx set xxxID=@0,xxxNotes=@2,xxxdatetime=@3 where xxxID=@1", AccessConnection);
accessCmdUpdate.Parameters.Add(new OleDbParameter("@0", dr[0].ToString()));
accessCmdUpdate.Parameters.Add(new OleDbParameter("@1", dr[1].ToString()));
accessCmdUpdate.Parameters.Add(new OleDbParameter("@2", convertedText));
if (dr[3] != System.DBNull.Value)
accessCmdUpdate.Parameters.Add(new OleDbParameter("@3",OleDbType.DBTimeStamp,100,ParameterDirection.Input,true,(byte)(100),(byte)(0),"xxxdatetime",DataRowVersion.Current,Convert.ToDateTime(dr[3])));
else
accessCmdUpdate.Parameters.Add(new OleDbParameter("@3", OleDbType.DBTimeStamp, 100, ParameterDirection.Input, true, (byte)(100), (byte)(0), "xxxdatetime", DataRowVersion.Current, DBNull.Value));
accessCmdUpdate.ExecuteNonQuery();
}
我已经尝试插入DbNull。@3 (DBTimeStamp)参数的值。但这行不通。我得到以下错误:
System.Data.OleDb。oledbexcexception: 一个或多个必需参数没有给定值。参数@0和@2插入正确
我如何通过NULL DBTimeStamp字段使用OleDbParameter?
我认为你应该选择允许null约束从数据库表的字段,你得到异常
否则你会忘记给代码中的任何字段赋值,而且它不允许null约束
请验证SQL语句中使用的table
和fields
的名称
这个问题已经在这个论坛解决了
http://forums.asp.net/p/1729383/4637110.aspx/1?Re +错误+在+努力+ +通过零+ + + + +时间戳字段
刚刚谈到这个问题:重要的是要知道OLEDB参数必须是有序的。不管用什么名字。