Aggiornamento errore di accesso
Domanda
Dim conn As OleDbConnection
Dim cmd As OleDbCommand
Public Sub openDB()
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\VFMS_DB.mdb;" & "Jet OLEDB:System Database=Security.mdw;User ID=Adster;Password=300624;")
conn.Open()
End Sub
Public Function UpdateUser() As Integer
Dim retCode As New Integer
Try
openDB()
cmd = conn.CreateCommand()
Il comando update seguito continua a darmi questo errore: "La conversione da stringa" 'WHERE [nome utente] =' "al tipo 'doppio' non è valido." e io non so perché. Il campo aUserName è un campo di stringa e ho controllato per assicurarsi che sia popolata.
cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & "', [Last Name] = '" & aSurname & "', [Contact Number] = '" & aContactNum & "', [Password] = '" & aPassword & "', [User Rights] = '" & aUserRights + "' WHERE [Username] = '" + aUserName + "' "
cmd.ExecuteNonQuery()
conn.Close()
'rsAddRecs = rsConn.Execute("UPDATE Users ([First Name], [Last Name], [Contact Number], [User Name], [Password], [User Rights]) VALUES ('" & aName & "','" & aSurname & "','" & aContactNum & "','" & aUserName & "','" & aPassword & "','" & aUserRights & "')")
retCode = 0
'rsConn.Close()
Return retCode
Catch ex As Exception
MessageBox.Show(ex.ToString, ex.Message, MessageBoxButtons.OK)
retCode = 1
Return retCode
End Try
End Function
Soluzione
Si dispone di un errore di battitura. Stai usando + caratteri concat alla fine della stringa sql al posto di & caratteri
sbagliato
cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & _
"', [Last Name] = '" & aSurname & _
"', [Contact Number] = '" & aContactNum & _
"', [Password] = '" & aPassword & "', [User Rights] = '" & _
aUserRights + "' WHERE [Username] = '" + aUserName + "' "
' ^ ^ ^
destro
cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & _
"', [Last Name] = '" & aSurname & _
"', [Contact Number] = '" & aContactNum & _
"', [Password] = '" & aPassword & "', [User Rights] = '" & _
aUserRights & "' WHERE [Username] = '" & aUserName & "' "
' ^ ^ ^
Altri suggerimenti
Si utilizza il codice SQL [Username]
:
cmd.CommandText = "UPDATE Users SET ... [Username]...
Mentre si commentata codice utilizzato [User Name]
:
'rsAddRecs = rsConn.Execute("UPDATE Users ... [User Name]...
Potrebbe il nome di colonna sbagliato essere la fonte del problema?
Un altro pensiero: avete Sanitized i valori dei parametri per esempio potrebbe il valore contenere un singolo citazione che sconvolge l'SQL dinamico. In ogni caso, penso che si dovrebbe considerare l'utilizzo di dichiarazioni preparate (o anche procedure) e l'utilizzo di oggetti Parameter per chiamare lo SQL, rinviando così la sanificazione dei valori dei parametri per il provider OLE DB, che ovviamente sapere di più sul soggetto che tu o io:)