Anfügeabfrage?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Skybird.

    Anfügeabfrage?

    Hey und Hallo, ich hab mir schon einige Tuts zur Datenbankprogrammierung durchgelesen und beherrsche Access bzw. MySQL auch ganz gut....jetzt wollt ich das mit vb verbinden.

    Mein Programm soll einen String in einer Tabelle abspeicher, die schon exestiert und in der auch Einträge vorhanden sind....also wollte ich es mit einer Anfügeabfrage machen, die ich erstmal in Access direkt gemacht habe um es zu testen...ging auch, nur als ich es dann in vb gemacht hatte....machte es einfach garnix, d.h. er fügte nix in die Tabelle ein und zeigte auch keinen error...was mach ich falsch ^^?

    SQL-Abfrage

    1. cmd.CommandText = "INSERT INTO tblwiki ( Eintragsname, Gruppenname, Beschreibung ) VALUES (" & Chr(34) & "Eintragsname2" & Chr(34) & "," & Chr(34) & "Gruppenname2" & Chr(34) & "," & Chr(34) & "beschreibung2" & Chr(34) & ");"
    //Kommentar
    Hi, der Insert-String sollte so aussehen:

    INSERT INTO tblwiki ( Eintragsname, Gruppenname, Beschreibung ) VALUES ('name', 'gruppe', 'Beschreibung')

    Bei dir sinds " statt '
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    geht leider immer noch nicht, gleiches Problem wie oben :(

    SQL-Abfrage

    1. cmd.CommandText = "INSERT INTO tblwiki ( Eintragsname, Gruppenname, Beschreibung ) VALUES ('Eintragsname2','Gruppenname2','beschreibung2');"



    /e: thx,werds mal verinnerlichen wenn ich Zeit hab picflop, im Moment blick ich da noch nicht durch :D
    //Kommentar
    danke vielmals, aber..


    SQL-Abfrage

    1. ExecuteNonQuery erfordert eine geöffnete und verfügbare Verbindung. Der aktuelle Status der Verbindung ist 'Geschlossen'.


    sorry, aber ich kenne mich mit Datenbankenprogrammieren noch nicht wirklich aus :(

    /e: habs jetzt, dank cmd.Open ^^

    Aber könntest du das mit dem ExecuteNonQuery nochmal erklären ? Wenn ich das so wie GalileoC. mache, erhalte ich die Fehlermeldung "Operation muss eine aktualisierbare Abfrage verwenden."
    //Kommentar

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Skybird“ ()

    Der Galileo Text ist mir jetzt irgendwie zu lang ;)

    Das OleDBCommand objekt kennt drei "execute" Methoden:
    ExecuteReader liefert einen OleDBReader zurück. Wird normalerweise verwendet, um vorhandene Datensätze per Schleife o.ä. zu durchlaufen
    ExecuteNonQuery führt einen SQL-Befehl (INSERT, DROP, DELETE, ...) aus und liefert die Anzahl der Datensätze zurück, die betroffen waren.
    ExecuteSkalar liefert genau EINEN Wert zurück. Wird normalerweise zum Zählen von Datensätzen, ermitteiln eines Maximums einer Spalte usw gemacht.


    Im Zweifel macht man ja auch nicht cmd.open sondern cn.open (wobei cn die OleDBConnection ist, die hinterher von cmd verwendet wird)
    ja ich meinte die con die ich geöffnet hab :) ...

    Ich habe jetzt folgenden quelltext:

    PHP-Quellcode

    1. Dim con As New OleDb.OleDbConnection
    2. Dim cmd As New OleDb.OleDbCommand
    3. Dim anzahl As Integer
    4. con.ConnectionString = _
    5. "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    6. "Data Source=C:\wiki2.mdb"
    7. cmd.Connection = con
    8. cmd.CommandText = _
    9. "INSERT INTO tblwiki ( Eintragsname, Gruppenname, Beschreibung ) VALUES ('Eintragsname2','Gruppenname2','beschreibung2');"
    10. Try
    11. con.Open()
    12. anzahl = cmd.ExecuteNonQuery()
    13. MsgBox("Anzahl Datensätze geändert: " & anzahl)
    14. con.Close()
    15. Catch ex As Exception
    16. MsgBox(ex.Message)
    17. End Try


    , wo aber wieder kommt "Operation muss eine aktualisierbare Abfrage verwenden." ...

    /e: jetzt gehts, ich vergess immer wieder das unter c:/ nix läuft mit vista :thumbdown: , aber großes Danke an dich picflop :)
    //Kommentar