[ad_1]
CREATE PROCEDURE [dbo].[GetOutletInfo] @PermitID int AS SELECT * FROM Outlets WHERE PermitID=@PermitID GO
puis dans mon code C#, je lance ceci :
var cn = new SqlConnection(connectionString); SqlDataAdapter da; DataSet ds = new DataSet(); da = new SqlDataAdapter("GetOutletInfo", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.SelectCommand.Parameters.Add("@PermitID", SqlDbType.Int).Value = PermitID; da.Fill(ds, "GetOutletInfo");
Lors de l’exécution, da.Fill lève cette exception :
Système.FormatException
HRésult=0x80131537
Message=Échec de la conversion de la valeur du paramètre d’une chaîne en un Int32.
Source=System.Data.SqlClient
J’ai cherché sur Google et me suis gratté la tête pendant des heures en essayant différentes choses, sans succès. Tous les conseils ou idées seront appréciés. Merci
Ce que j’ai essayé :
This query works (since it does not need a parameter) SqlDataAdapter da; DataSet ds = new DataSet(); da = new SqlDataAdapter("GetInspectionLettersQueue", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.Fill(ds, "GetInspectionLettersQueue");
J’ai essayé de convertir le paramètre en int32 avant de l’ajouter à la commande Parameters.Add, ce qui n’a pas fonctionné.
Solution 1
Eh bien, je suppose que j’ai besoin de plus de café. Il s’est avéré que PermitID était une chaîne, mais qu’il était défini sur “foo” – duh – pas étonnant – merci d’avoir regardé une fois que je l’ai défini sur “42”, cela a fonctionné.
je ne me sens pas trop
Solution 2
Si je me souviens de mon SQL, les types de paramètres doivent tous être des chaînes et non des entiers. Essayez ça.
[ad_2]
コメント