2008-12-06 4 views
1

Je possède ce code:Rédaction d'une requête de mise à jour dans asp.net (base de données d'accès) (Visual Basic)

Dim pathString As String = HttpContext.Current.Request.MapPath("Banking.mdb") 
    Dim odbconBanking As New OleDbConnection _ 
      ("Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
      "Data Source=" + pathString) 
    Dim sql As String 
    sql = "UPDATE tblAccounts balance = " & CDbl(balance + value) & " WHERE(accountID = " & accountID & ")" 
    odbconBanking.Open() 
    Dim cmd As New OleDbCommand(sql, odbconBanking) 
    cmd.ExecuteNonQuery() 

Cependant, une exception est levée, quand je le lance: Erreur de syntaxe dans l'instruction UPDATE.

J'ai essayé d'exécuter une instruction similaire dans Access et cela fonctionne correctement.

Répondre

0

Il vous manque SET dans le cadre de UPDATE.

Il doit être UPDATE nom_table SET nom_champ = ... WHERE [critères]. Sur une note de côté, vous utilisez le code de style ASP classique à l'intérieur d'asp.net. Je vais suggérer de lire quelques docs sur ASP.net et comment concevoir des applications de manière stratifiée.

+0

Merci beaucoup. En ce qui concerne la conception correcte, avez-vous une URL? Ou même qu'est-ce qu'un bon livre sur le sujet? Merci. – Gezim

1

L'instruction SQL est certainement manque SET mot-clé. En outre, je vous suggère de rafraîchir parameterized query:

Dim sql As String = "UPDATE tblAccounts " & _ 
        "SET balance = ? " & _ 
        "WHERE(accountID = ?)" 

Dim cmd As New OleDbCommand(sql, odbconBanking) 

cmd.Parameters.Add("Balance", CDbl(balance + value)) 
cmd.Parameters.Add("AccountId", accountID 

cmd.ExecuteNonQuery() 

De cette façon, non seulement est le statment SQL est plus claire, il aide empêche les attaques possibles d'injection SQL.

Questions connexes