2016-12-09 2 views
0

Ich bin mit der Erstellung eines einfachen GUI-basierten Datenbank-Viewer beauftragt. Die Datenbank wird auf unserem FTP-Server in Schulen gehostet, wir müssen Visual Basic verwenden und größtenteils funktioniert es Ich kann suchen, anzeigen und zur Datenbank hinzufügen, aber das Bearbeiten eines vorhandenen Datensatzes bereitet mir Probleme.Oracle-Datenbankfehler mit vb.net

Wenn ich versuche, den Datensatz zu aktualisieren, bekomme ich einen ora-00904 Fehler ungültiger Bezeichner, wenn kein Doppelpunkt (:) in wo Teil der Abfrage und ein ora-01008 nicht Variablen mit einem Doppelpunkt (:) gebunden. Wir haben bisher nur sqldeveloper benutzt und als letztes Projekt wurden wir gebeten, Visual Basic zu verwenden, aber wir haben nie etwas derartiges in der Klasse behandelt, also ist es eine Herausforderung, nehme ich an.

PS: Ich habe nur diesen Teil auskommentiert, so dass ich den Fehler sehen konnte.

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 
Dim strCustomerEmail As String = "" 
Dim strLastName As String = "" 
Dim strFirstName As String = "" 
Dim strAddress As String = "" 
Dim strCity As String = "" 
Dim strState As String = "" 
Dim intZip As Integer = 0 
Dim datDateSignedUp As Date 
Dim intCustomerNumber As Integer = 0 


Try 
    strCustomerEmail = CStr(txtCustomerEmail.Text) 
    strLastName = CStr(txtLastName.Text) 
    strFirstName = CStr(txtFirstName.Text) 
    strAddress = CStr(txtAddress.Text) 
    strCity = CStr(txtCity.Text) 
    strState = CStr(txtState.Text) 
    intZip = CInt(txtZip.Text) 
    datDateSignedUp = CDate(txtDateSignedUp.Text) 
    intCustomerNumber = CInt(txtCustomerNumber.Text) 



    Dim sql As String = "UPDATE P_CLIENTS SET CUSTOMER_EMAIL = :CUSTOMER_EMAIL, LASTNAME = :LASTNAME, FIRSTNAME = :FIRSTNAME, ADDRESS = :ADDRESS, CITY = :CITY, STATE = :STATE, ZIP = :ZIP, DATE_SIGNED_UP = :DATE_SIGNED_UP, CUSTOMER# = :CUSTOMER# WHERE CUSTOMER_EMAIL = :EDIT_CUSTOMER_EMAIL" 

    Dim cmd2 As New OracleCommand(sql, conn) 
    conn.Open() 
    cmd2.Parameters.Add("CUSTOMER_EMAIL", strCustomerEmail) 
    cmd2.Parameters.Add("LASTNAME", strLastName) 
    cmd2.Parameters.Add("FIRSTNAME", strFirstName) 
    cmd2.Parameters.Add("ADDRESS", strAddress) 
    cmd2.Parameters.Add("CITY", strCity) 
    cmd2.Parameters.Add("STATE", strState) 
    cmd2.Parameters.Add("ZIP", intZip) 
    cmd2.Parameters.Add("DATE_SIGNED_UP", datDateSignedUp) 
    cmd2.Parameters.Add("EDIT_CUSTOMER_EMAIL", strEditCustomerEmail) 
    cmd2.CommandType = CommandType.Text 
    cmd2.ExecuteNonQuery() 

    txtCustomerEmail.Text = strEditCustomerEmail 
    txtLastName.Text = "" 
    txtFirstName.Text = "" 
    txtAddress.Text = "" 
    txtCity.Text = "" 
    txtState.Text = "" 
    txtZip.Clear() 
    txtDateSignedUp.Clear() 
    txtCustomerNumber.Clear() 
    'txtCustomerEmail.Select() 

    txtCustomerEmail.Enabled = True 
    txtLastName.Enabled = True 
    txtFirstName.Enabled = True 
    txtAddress.Enabled = True 
    txtCity.Enabled = True 
    txtState.Enabled = True 
    txtZip.Enabled = True 
    txtDateSignedUp.Enabled = True 
    txtCustomerNumber.Enabled = True 



    'Catch ex As Exception 
    ' MessageBox.Show("An error occurred while attempting to add a new record.", "Error") 
Finally 
    conn.Close() 
    txtCustomerEmail.Select() 
End Try 
End Sub 
+2

Warum fügen Sie den Doppelpunkt nicht auch in den Parameternamen hinzu, wenn Sie sie zur Parametersammlung hinzufügen? – Steve

+1

Fehlt Ihnen Kunde # aus Ihren Parametern? – theduck

+0

heilige Scheiße ich denke das ist es .... ich vermisse Kunde # Mist lass mich das versuchen. Ich arbeite seit Tagen an Projekten für meine Klassen. Ich bin so ausgebrannt, dass ich sowas vermisse. – killj0y

Antwort

1

Sie vermissen Customer# aus Ihrer Parameterliste.