Verwerking naar database (dataset, executenonquery)

Status
Niet open voor verdere reacties.

tuning4you

Gebruiker
Lid geworden
3 jun 2007
Berichten
328
Beste,

Ik ben een applicatie aan het maken die atleten verwerkt in een database. Toevoegen, wijzigen en verwijderen.
Een optie is dat alle atleten geëxporteerd worden naar een tekstbestand (.txt). Na export moet een kolom worden aangepast in de database om aan te duiden dat deze werden geëxporteerd.
Een laatste optie is dat een groot aantal atleten kunnen worden geïmporteerd via een tekstbestand.

Nu vroeg ik me af wat de beste optie is om dit te doen.
Maak ik gebruik van een dataset voor update, insert en delete commando's voor het gewone beheer van de atleten? En gebruik ik dan eventueel ExecuteNonQuery voor het verwerken (importeren en exporteren) van een volledige lijst data? Ik heb namelijk niet veel ervaring in wat de beste en snelste manier is om dit te doen.

Met vriendelijke groeten,
Andy
 
Je zal in ieder geval eerst moeten bedenken hoe je het in je tekstbestand wilt hebben staan. Vanuit daar kan je dan verder werken.

Als je een datagridview gebruikt is het volgens mij ook vrij makkelijk om alle cellen af te gaan met een (of meer) loop(s). Dan kan je dus alle waarden een voor een in een tekstbestand zetten.


Ik geloof dat old Hippy hier meer verstand van heeft dan ik...

Succes!:thumb:
 
De data uit database moet eerst worden verwerkt tot bepaalde strings voor ze in een databestand worden geplaatst.
Ik vroeg me gewoon af wat de beste optie is om de data uit database te halen, te verwerken en vervolgens een update in database uit te voeren.
Ik heb eens een test gedaan:

Via DataReader en ExecuteNonQuery:

Dim strSQL As String = ""
Dim strconnectionstring As String = ""

strSQL = "select * from tbl_Atleten"
Dim strsqlupdate As String = ""
strconnectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Atleten.accdb"

Dim objconnection As New OleDbConnection(strconnectionstring)
Dim objcommand As New OleDbCommand(strSQL, objconnection)

objcommand.Connection.Open()

Dim objdatareader As OleDbDataReader = objcommand.ExecuteReader(CommandBehavior.CloseConnection)

While objdatareader.Read
strsqlupdate = "Update tbl_Atleten SET Exportdatum='" & Format(DateTime.Now, "dd-MM-yyyy HH:mm:ss") & "', Geëxporteerd=True WHERE id=" & objdatareader("id")
Dim objcommand2 As New OleDbCommand(strsqlupdate, objconnection)
objcommand2.ExecuteNonQuery()
End While

objdatareader.Close()
objcommand.Connection.Close()



Via Dataset:

Dim strFieldNameID As String = "id"
Dim objDataSet As DataSet
Dim objDataAdapter As OleDbDataAdapter
Dim objConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Atleten.accdb")
objConnection.Open()

objDataAdapter = New OleDbDataAdapter("select * from tbl_Atleten", objConnection)
objDataSet = New DataSet

With objDataAdapter
If strFieldNameID <> "" Then
Dim objCommandBuilder As New OleDbCommandBuilder(objDataAdapter)
.InsertCommand = objCommandBuilder.GetInsertCommand
.DeleteCommand = objCommandBuilder.GetDeleteCommand
.UpdateCommand = objCommandBuilder.GetUpdateCommand
End If

.Fill(objDataSet)
End With



Dim datarowpreview As DataRow
For Each datarowpreview In objDataSet.Tables(0).Rows
datarowpreview("Geëxporteerd") = True
datarowpreview("Exportdatum") = Format(DateTime.Now, "dd-MM-yyyy HH:mm:ss")
Next

objDataAdapter.Update(objDataSet)
objConnection.Close()



De oplossing via dataset duurde toch een groot aantal seconden langer voor een 2500 rijen.
 
De data uit database moet eerst worden verwerkt tot bepaalde strings voor ze in een databestand worden geplaatst.
Ik vroeg me gewoon af wat de beste optie is om de data uit database te halen, te verwerken en vervolgens een update in database uit te voeren.
Ik heb eens een test gedaan:

Via DataReader en ExecuteNonQuery:

Dim strSQL As String = ""
Dim strconnectionstring As String = ""

strSQL = "select * from tbl_Atleten"
Dim strsqlupdate As String = ""
strconnectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Atleten.accdb"

Dim objconnection As New OleDbConnection(strconnectionstring)
Dim objcommand As New OleDbCommand(strSQL, objconnection)

objcommand.Connection.Open()

Dim objdatareader As OleDbDataReader = objcommand.ExecuteReader(CommandBehavior.CloseConnection)

While objdatareader.Read
strsqlupdate = "Update tbl_Atleten SET Exportdatum='" & Format(DateTime.Now, "dd-MM-yyyy HH:mm:ss") & "', Geëxporteerd=True WHERE id=" & objdatareader("id")
Dim objcommand2 As New OleDbCommand(strsqlupdate, objconnection)
objcommand2.ExecuteNonQuery()
End While

objdatareader.Close()
objcommand.Connection.Close()



Via Dataset:

Dim strFieldNameID As String = "id"
Dim objDataSet As DataSet
Dim objDataAdapter As OleDbDataAdapter
Dim objConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Atleten.accdb")
objConnection.Open()

objDataAdapter = New OleDbDataAdapter("select * from tbl_Atleten", objConnection)
objDataSet = New DataSet

With objDataAdapter
If strFieldNameID <> "" Then
Dim objCommandBuilder As New OleDbCommandBuilder(objDataAdapter)
.InsertCommand = objCommandBuilder.GetInsertCommand
.DeleteCommand = objCommandBuilder.GetDeleteCommand
.UpdateCommand = objCommandBuilder.GetUpdateCommand
End If

.Fill(objDataSet)
End With



Dim datarowpreview As DataRow
For Each datarowpreview In objDataSet.Tables(0).Rows
datarowpreview("Geëxporteerd") = True
datarowpreview("Exportdatum") = Format(DateTime.Now, "dd-MM-yyyy HH:mm:ss")
Next

objDataAdapter.Update(objDataSet)
objConnection.Close()



De oplossing via dataset duurde toch een groot aantal seconden langer voor een 2500 rijen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan