Gå til innhold

Slette og endre innhold i MySQL i Visual Basic


Anbefalte innlegg

Hei!

Jeg er ganske ny i Visual Basic, så sliter med endring og sletting av innhold i en mySQL database.

 

Jeg har opprettet tilkobling, og får fint til å legge til rader i databasen, søke etter navn, og å se på alle radene. Denne sistnevnte gjør jeg med en ListBox.

Men jeg skulle gjerne fått hjelp til:

1. Hvordan jeg overfører all informasjon i ListBox i hver sin TextBox, (slik at navn, alder og dato kommer i hver sin TextBox) på den raden jeg klikker på i ListBoxen.

Deretter vil jeg endre informasjonen i TextBoxene, og oppdatere informasjonen i databasen.

2. Hvordan jeg får slettet et element i databasen, når jeg har klikket på det i ListBoxen.

Jeg får slettet elementet fra ListBox, men da blir det ikke slettet i databasen, og det dukker opp i listboxen nestegang jeg kjører programmet.

KODE:

Private Sub btnSlett_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSlett.Click
       Dim intResponse As Integer

       intResponse = MsgBox("Er du sikker på at du vil slette", _
       vbYesNo + vbQuestion, _
       "Slett")

       If intResponse = vbYes Then
           ListBox1.Items.Remove(ListBox1.SelectedItem)

       ElseIf intResponse = vbNo Then

       End If
   End Sub

 

3. En enkel kode for å legge til overskrifter for hver "kategori" i ListBox når jeg viser informasjon om alle radene fra databasen.

KODE:

Try
           'Lager sentrale objekter
           Dim sql As New MySqlCommand("SELECT * FROM ansatt", tilkobling)
           Dim da As New MySqlDataAdapter
           Dim interntabell As New DataTable

           'Objektet "da" utfører spørringen og legger resultatet i "interntabell"
           da.SelectCommand = sql
           da.Fill(interntabell)

           'Har ikke lenger bruk for å
           tilkobling.Close()

           'En tabell har mange rader. DataRow-objektet kan lagre 1 rad om gangen
           Dim rad As DataRow
           Dim ansattid, fødselsnummer, navn, adresse, postnummer, poststed, mobilnummer, epostadresse, bilde, datoansettelse, timelonn, skatteprosent, kontonummer, kommentar As String 'hjelpevariabler være tilkoblet til databasen

           'Fyller listeboksen med ønsket informasjon
           ListBox1.Items.Clear() 'fjerner først eventuell gammel tekst
           For Each rad In interntabell.Rows
               ansattid = rad("id")
               fødselsnummer = rad("fodselsnummer")
               navn = rad("navn")
               adresse = rad("adresse")
               postnummer = rad("postnummer")
               poststed = rad("poststed")
               mobilnummer = rad("mobilnummer")
               epostadresse = rad("epost")
               bilde = rad("bilde")
               timelonn = rad("timelonn")
               skatteprosent = rad("skatt")
               kontonummer = rad("kontonummer")
               kommentar = rad("kommentar")
               ListBox1.Items.Add(ansattid & " | " & fødselsnummer & " | " & navn & " | " & adresse & " | " & postnummer & " | " & poststed & " | " & mobilnummer & " | " & epostadresse & " | " & bilde & " | " & timelonn & " | " & skatteprosent & " | " & kontonummer & " | " & kommentar)
           Next rad
       Catch feilmelding As MySqlException
           MsgBox("Feil ved tilkobling til databasen: " & _
           feilmelding.Message)
       Finally
           tilkobling.Dispose()
       End Try

 

Håper noen kan hjelpe meg :)

Lenke til kommentar
Videoannonse
Annonse

I Form designeren, så er det egenskaper som heter DataBindings. Disse brukes til å binde egenskaper til databaser ved å bruke BindingSource og DataSet. Da skal du slippe å lese all data fra databasen manuelt.

 

Okei.. Jeg la inn dette, men da må jeg velge typed eller untyped dataset, også koble bindingsource til denne.. hvordan får jeg koblet til min MYSQL database som ligger på nettet til dette?

Lenke til kommentar

Du kan jo gjøre alle disse tingene manuelt med SQL også.

 

UPDATE MyTable SET Col1='abc123' WHERE TableID=4

 

DELETE FROM MyTable WHERE TableID = 4

 

Det vet jeg.. Men problemet er at jeg ikke vet hvilken ID jeg skal Endre/Slette. Dette er noe brukeren skal velge i en i ListBox.

Hadde absolutt vært greiest å gjøre det slik du sier, men har du en kode som jeg kan skrive istedet for tableID = 4 ? Altså TableID = Hovered eller noe?

Lenke til kommentar

Dim sql As String = String.Format("UPDATE MyTable SET MyField={0} WHERE TableID = {1}", FieldValue, Id)

ID får du fra SELECT-en du dytter inn i listboxen.

 

Jeg gjorde som du sa først, for å teste om det funket å slette.

Koden ble myCommand = New MySqlCommand("DELETE FROM ansatt WHERE ansatt.id = '9'", tilkobling)

Men raden med id 9 blir ikke slettet i databasen :S Hvorfor det?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...