2010-05-19 5 views
1

c'est un bizarre, quand je cours le code suivant toutes les lignes sont retournées par la base de données. Imaginez ce qui se passerait s'il s'agissait d'une mise à jour ou d'une suppression.NPGSQL semble avoir un bug assez grand?

Dim cmd As New NpgsqlCommand 

    cmd.Connection = conn 
    cmd.CommandText = "select * FROM ac_profiles WHERE profileid = @profileId" 
    cmd.Parameters.Add("@profile", 58) 
    Dim dt As DataTable = DataAccess2.DataAccess.sqlQueryDb(cmd) 

    DataGridView1.DataSource = dt 

Ma question est la suivante: pourquoi cela se produit-il?

Répondre

2

Je ne suis pas un expert en pg-sql, mais je pense que c'est parce que vous ajoutez un paramètre différent de celui que vous utilisez dans l'instruction SQL. Je pense que vous utilisez également la mauvaise syntaxe pour faire référence à un paramètre. Voir le user manual pour plus d'informations. Essayez ceci:

cmd.Connection = conn 
cmd.CommandText = "select * FROM ac_profiles WHERE profileid = :profileid" 
cmd.Parameters.Add("profileid", 58) 
Dim dt As DataTable = DataAccess2.DataAccess.sqlQueryDb(cmd) 
+0

Votre bon, je viens de remarquer que, mais vous ne pouvez pas utiliser: dans la dernière version - vous ERROR: 42601: erreur de syntaxe ou à proximité « : » Cela ressemble à une très dangerious bug pour moi. –

+0

Oubliez le: ou @, les deux fonctionnent. le problème c'est le nom, c'est aussi un cas sensible. –

+0

Le problème semble être en utilisant @, c'est mauvais - vous devez utiliser:. Si vous obtenez quelque chose de mal comme un nom de paramètre, il vous donnera une erreur de syntaxe lors de l'utilisation:, cependant, si vous utilisez @ alors il ne retourne pas toutes les lignes, @ est également sensible à la casse. –

Questions connexes