Search code examples
c#oledb

Error while trying to pass NULL to a timestamp field


I am trying to insert records into Access table from SQL Server table.

For each row in SQL Server table, I'm checking for a condition that if timestamp field is NULL, then insert NULL into corresponding Access field as well.

Pasting a small code snippet here:

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();

}

I have tried inserting DbNull.Value for @3 (DBTimeStamp) parameter. But it doesn't work. I get the following error:

System.Data.OleDb.OleDbException: No value given for one or more required parameters. Parameters @0 and @2 are inserted properly.

How do I pass NULL for DBTimeStamp field using OleDbParameter?


Solution

  • The issue is solved in this forum

    http://forums.asp.net/p/1729383/4637110.aspx/1?Re+Error+while+trying+to+pass+NULL+to+a+timestamp+field