Symptoms
When you have a timestamp column in the query of the DataAdapter Wizard, the timestamp column is included in the InsertCommand property of the DataAdapter object, and you receive the following error message:
System.Data.SqlClient.SqlException: Cannot insert a non-null value into a timestamp column. Use INSERT with a column list or with a default of NULL for the timestamp column.”The DataAdapter Wizard uses OLE DB or Microsoft SQL Client .NET Data Providers. Although the timestamp columns are read-only columns in the table, you notice that the CommandText property in the InsertCommand property is the following:
INSERT INTO Tablename(column, timestampcolumn) VALUES (@column, @timestampcolumn); SELECT column, timestampcolumn FROM Tablename
Resolution
timestamp columns are read-only columns of the table, and the values in each row of the timestamp column are unique. When the DataAdapter object connects to the Database through the Data Providers to run a set of commands, the columns in a table that cannot be updated or be inserted are marked as read-only by the Data Providers and are not included in the InsertCommand property or the UpdateCommand property of the DataAdapter object. But the timestamp columns are not marked as read-only by the .NET Data Providers in the DataAdapter object. Therefore, the InsertCommand property includes the timestamp columns.