Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 4 van 4

Onderwerp: Verwerking naar database (dataset, executenonquery)

  1. #1

    Verwerking naar database (dataset, executenonquery)

    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

  2. #2
    Mega Senior MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    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!

  3. #3
    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.

  4. #4
    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.

  5. Dit topic is automatisch gesloten omdat er sinds vier maanden niet meer op gereageerd is.

    Indien gewenst kan de topicstarter een verzoek tot heropening indienen.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Linkpartners
Aanbiedingen