So I have a situation where I am using a SqlDataAdapter to insert rows into a table in a SQL Server 2014 database.
The source of the data is an Excel spreadsheet.
<I had the same issue, and the solution was quite simple, once you've seen it... I had my Database in Visual studio, and its property "Copy to Output Directory" was set to "Copy always", instead of "Do not copy". So everytime I was running my code, the database was erased!
Solution : - modify your connection string so it points directly to your database - Change your database property to "Do not copy"
Each DataTable
tracks the RowState
of its rows, so manually adding data in a loop works because they are all Added
(it has nothing to do with manually creating the DataTable
- its the rows). When you load from some other source like Excel, they are not added/new.
If you use a DataAdapter
to fill the table, you can tell it not to set the RowState
to Unchanged. This is very useful for migrating data from one data store to another:
myDA.AcceptChangesDuringFill = False
...
rows = myDA.Fill(xlDT)