2010-07-20 7 views
0
Dim id as integer = 1 
Dim command as sqlcommand 
Dim reader as idatareader 

command = db.GetSqlStringCommand("select id, image, caption from profile where id = @id and image IS NOT NULL Order By NEWID()") 
db.AddInParameter(command, "@id", DbType.Int32, id) 
reader = db.ExecuteReader(Command) 

Le code est de lancer une erreur que je ne l'ai jamais vu auparavant ....Argument Exception dans la méthode DeriveParameters

SqlCommand.DeriveParameters a échoué parce que la valeur de la propriété SqlCommand.CommandText est un nom invalide multipart "/port: 4544/chemin: "C: \ sitepath"/vpath: "/ sitepath" ", utilisation incorrecte des guillemets.

Comment corriger cette erreur.

Répondre

0

Il semble que le code échoue à un niveau plus profond que le code que vous avez posté. J'ai reçu une erreur similaire de SQLServer Management Studio lorsque je n'ai pas correctement défini le chemin d'accès à ma base de données. Comment configurez-vous l'objet 'db'?

Quelle est votre chaîne de connexion? (Sans mot de passe! :-))

L'erreur est évidemment liée à la chaîne mal formée en termes de positions de cotation. Savez-vous où entlib construit cette chaîne et comment des parties de celle-ci telles que "C: \ sitepath" apparaissent avec des guillemets au lieu d'être ajoutées en tant que littéraux de chaîne?

Je me demande si quelque part il y a une déclaration comme

Dim sRootPath As String = """C:\sitepath""" 

..which mène aux citations étant insérées dans la chaîne construite.

+0

Le bloc d'application d'accès aux données de la bibliothèque d'entreprise fournit la base de données, la chaîne de connexion utilisée est la chaîne par défaut et fonctionne avec beaucoup d'autres requêtes sur le site. Si je remplace les paramètres par des valeurs entières et exécutez la requête dans SQLSMS, il renvoie les résultats attendus. Merci – Phil

0

Je ne ai jamais vu cette erreur, mais peut-être ce lien aide à: http://entlib.codeplex.com/Thread/View.aspx?ThreadId=60513

« Quelle version de EntLib est cela, il n'y a pas de surcharge 4.1 pour ExecuteReader qui accepte une instruction SQL, il y a une acceptation d'une chaîne mais Il est probable que vous utilisiez cette surcharge, mais je ne suis pas sûr car j'obtiens une erreur différente si je transmets une instruction sql "

+0

Merci, j'utilise v 5 et en utilisant commandname = db.getsqlstringcommand puis en utilisant cela avec db.executereader (commandname) fonctionne bien dans tout mon autre code. Le fil de codeplex n'est pas résolu, ce qui n'était pas très utile. – Phil

0

Je ne connais pas l'erreur mais la commande par NEWID() me dérange un peu. Avec newid() SQLServer appelle la fonction newid() pour chaque ligne de votre dataset.

+0

sur la suppression de la commande par newid() l'erreur est toujours la même. Merci – Phil

Questions connexes