Announcement

Collapse
No announcement yet.

SQLException-Fehlermeldung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQLException-Fehlermeldung

    Hallo,

    ich wollte nach 3 Jahren abstinenz vom programmieren, heute eine kleine Helpdesk Anwendung aufbauen.

    Hier der Code:
    [highlight=vbnet]
    Private Sub DbInsert()
    ' Declaration of the Connection String
    Dim InsertDatatable As New DataTable
    Dim InsertConnect As String
    Dim InsertStatement As String
    Dim GetSchema As New SqlCommand


    InsertConnect = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Dokumente und Einstellungen\Vahrmann\Desktop\VB.NET - PROJECTS\Helpdesk\Helpdesk.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;Context Connection=False"
    InsertStatement = "INSERT INTO TBProblemidentifikation ([PAntragssteller],[PAbteilung],[PBetriebssystem],[PProgramm],[PPrioritaet],[PFehlerbeschreibung]" & _
    " VALUES (Hasdcha,Verk,Vista,exec,hifh,asdf)"

    'Create new sql connection
    Dim InsertCn As SqlConnection

    InsertCn = New SqlConnection(InsertConnect)

    ' Create Schema for Datatable. Now we don't have to build our own Datatable
    GetSchema.CommandText = "Select * From [TBProblemidentifikation]"
    GetSchema.Connection = InsertCn
    Dim InsertDataAdapter As New SqlDataAdapter(GetSchema)
    InsertDataAdapter.FillSchema(InsertDatatable, SchemaType.Source)

    'Create new SQL execute
    Dim Insertsqlcommand As SqlCommand

    Insertsqlcommand = New SqlCommand(InsertStatement, InsertCn)
    'Parameterisierung
    'create parametric-array, now the DataAdapter knows, which type of datas he has to handle.
    Dim SQLPC As SqlParameterCollection = Insertsqlcommand.Parameters
    'SQLPC.Add("PId", SqlDbType.BigInt, 8, "PID")
    SQLPC.Add("PAntragssteller", SqlDbType.VarChar, 50, "PAntragssteller")
    SQLPC.Add("PAbteilung", SqlDbType.VarChar, 50, "PAbteilung")
    SQLPC.Add("PBetriebssystem", SqlDbType.VarChar, 50, "PBetriebssystem")
    SQLPC.Add("PProgramm", SqlDbType.VarChar, 50, "PProgramm")
    SQLPC.Add("PPrioritaet", SqlDbType.VarChar, 50, "PPrioritaet")
    SQLPC.Add("PFehlerbeschreibung", SqlDbType.VarChar, 50, "PFehlerbeschreibung")

    ' InsertCommand for to lock the DataAdapter.
    InsertDataAdapter.InsertCommand = Insertsqlcommand

    'Create new sample.
    Dim SQLNewRow As DataRow
    SQLNewRow = InsertDatatable.NewRow

    'fill with datas
    'SQLNewRow("PID") = 5
    SQLNewRow("PAntragssteller") = txtApplicant.Text
    SQLNewRow("PAbteilung") = txtDivision.Text
    SQLNewRow("PBetriebssystem") = cmbOperatingsystem.Text
    SQLNewRow("PProgramm") = txtUsedprogramm.Text
    SQLNewRow("PPrioritaet") = cmbPriority.Text
    SQLNewRow("PFehlerbeschreibung") = txtErorrdescription.Text

    'put data in table
    InsertDatatable.Rows.Add(SQLNewRow)

    'Update gains SQL-command
    InsertDataAdapter.Update(InsertDatatable) End Sub
    [/highlight]

    Der Fehler entsteht beim Kompilieren in der letzten Zeile und lautet:

    SQLException wurde nicht behandelt.

    Falsche Syntax in der Nähe des 'VALUES'-Schlüsselwortes.
    Ich weiß nun nicht genau, ob der Fehler im Programmcode ist, oder es mit dem SQL Server zu tun hat ...
    Zuletzt editiert von Jürgen Thomas; 15.12.2009, 11:57. Reason: [highlight=vbnet] eingefügt

  • #2
    hat sich erledigt ...

    wenn man es mit ein bisschen abstand betrachtet sieht man es sofort ...

    Comment


    • #3
      Hallo Bernd und willkommen,

      die schließende Klammer hinter der Spaltenliste fehlt. Wahrscheinlich hast du auch Spaltennamen und Parameter verwechselt (siehe unten).

      Auch wenn das jetzt einfach zu lösen war, bitte ich dich um mehr Sorgfalt bei der Fragestellung.
      1. Benutze das richtige Unterforum. Für Datenbank-Probleme ist ADO.NET richtig.
      2. Code ist unbedingt als solcher zu formatieren, siehe jeweils den obersten Beitrag in den Foren NET und VB.NET. (Das werde diesmal ich erledigen, aber künftig mach es bitte selber.)
      3. Wenn in der Fehlermeldung auf "VALUES" hingewiesen wird, dann liegt der Fehler auch dort (kurz davor oder dahinter); dann brauchst du uns keine Romane zu zitieren.
      4. Benutze bitte die Vorschau-Funktion. Dann wäre dir auch aufgefallen, dass gelbe Schrift für Hervorhebungen denkbar ungeeignet ist.

      Außerdem inhaltliche Anmerkungen:
      * Die eckigen Klammern bei Spaltennamen sind nur dann erforderlich, wenn sie Sonderzeichen enthalten. Jetzt machen sie den SQL-Befehl nur unübersichtlich.
      * Parameter (hervorragend, dass du sie benutzt) müssen bei MS-Sql mit @ gekennzeichnet werden, und zwar sowohl im SQL-Befehl als auch in den Add-Methoden.
      * Das lässt mich vermuten, dass du im INSERT-Befehl die Spalten und Parameter durcheinander gebracht hast.
      Auch habe ich den Verdacht, dass die gesamte Konstruktion (Lesen, Ändern, Speichern) noch nicht gut genug durchdacht und sauber aufgeteilt ist. Vielleicht liest du dazu die entsprechenden Kapitel z.B. im openbook visualbasic durch.

      Trotzdem viel Erfolg! Jürgen

      PS. Auch wenn du es inzwischen selbst gesehen hast, beachte trotzdem meine Anmerkungen.

      Comment


      • #4
        Hallo Jürgen,

        danke für die Antwort / Berichtigung und die konstruktive Kritik.

        * Ja ich hab im Moment ja auch noch nichtmal Variablen aus der startenden Funktion übergeben es ist halt starr codediert.

        Genau das Problem (Parameter) was du angesprochen hast bekomme ich nun ...

        Fehlermeldung:

        Die parametrisierte Abfrage '(@Applicant varchar(50),@Division varchar(50),@Operatingsystem v' erwartet den '@Applicant'-Parameter, der nicht bereitgestellt wurde.

        Kann mir jmd helfen?
        Zuletzt editiert von bernd26061983; 15.12.2009, 14:09.

        Comment


        • #5
          Hab den Thread ins ADO.NET Forum verschoben.

          Comment


          • #6
            dankeschön

            Comment

            Working...
            X