I am using Visual Basic 2010 Express.
I have an API which returns, amongst other things, an array of a class.
I want to load the information in this array to a SQL server 2008 Express database.
The items in the class are simple datatypes (dates, integers, strings etc) and can be mapped to SQL datatypes.
So, my current solution works, but is a bit ugly.
If the API returns
AllPeople, my code goes something like:
With AllPeople
For i = 0 to .PeopleData.Length - 1
With .PeopleData(i)
ConSql.Open()
MySqlCommand = New SqlCommand("SpInsertPeople", ConSql)
MySqlCommand.Parameters.AddWithValue("Forename", .forename)
MySqlCommand.Parameters.AddWithValue("Surname", .surname)
[etc]
MySqlCommand.ExecuteNonQuery()
ConSql.Close()
End With
Next
End With
So, I'm looping through the index of the array and for each item in the array, I'm adding the class values to parameters for a stored procedure and executing it. (The stored procedure adds new records, updates exisiting ones)
Currently, the size of the array is fairly small - say tens or hundreds of records - but it will grow to several thousand. I don't want to be hammering my SQL server with tens of thousands of seperate executions of stored procedures. This process will have to repeat every 30 seconds or so.
So, is there a cleaner way of getting data from an array of class into a SQL Server table?
Or is
For... Execute stored procedure... Next... as good as it gets?
Our community of experts have been thoroughly vetted for their expertise and industry experience.