C# ADO.NET - impossible de Trouver la Procédure Stockée
Je suis en train d'exécuter une procédure stockée par le biais de C#, ADO.NET et ci-dessous le code que j'essaie de l'exécuter:
using (SqlConnection conn = new SqlConnection(".;Initial Catalog=MyDB;User ID=sa;Password=***"))
{
try
{
string cmdText = "dbo.sp_Create_FlaggedItemEntry @URI, @ID";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@URI", value1);
cmd.Parameters.AddWithValue("@ID", value2);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null)
{
conn.Close();
}
}
}
Maintenant quand j'essaye de le corriger, j'ai eu une erreur à la ligne - cmd.ExecuteNonQuery();
- "impossible de Trouver la Procédure Stockée dbo.sp_Create_FlaggedItemEntry"
J'ai vérifié que la Chaîne de Connexion est tout à fait correct et de la Procédure Stockée existe.
De plus, Si je change la ligne cmd.CommandType = CommandType.StoredProcedure;
à cmd.CommandType = CommandType.Texte; il a été exécuté avec succès et, comme prévu.
Quelqu'un peut-il suggérer ce que je suis absent et fais de mal ici - s'il vous Plaît pardonnez-moi si c'est quelque chose de très basique car il est assez long depuis la dernière fois que j'ai travaillé avec ADO.NET
OriginalL'auteur Pankaj Gaur | 2014-09-07
Vous devez vous connecter pour publier un commentaire.
CommandType.StoredProcedure
signifie que leCommandText
ne doit contenir que le nom de la procédure stockée.Supprimer les noms des paramètres de la chaîne.
OriginalL'auteur SLaks
Prendre les paramètres de la commande de texte. En outre, vous ne devez pas spécifier de dbo.
La raison, c'est de travailler avec
CommandType.Text
est parce qu'il est légitime d'une commande SQL comme ça - si vous avez été à ouvrir SSMS et le type qu'il avait travailler aussi longtemps que vous créez également les variables @URI et @IDLa Documentation ici
OriginalL'auteur Ciaran
Vous devez mentionner la Source de Données /Serveur dans connectionString. Aussi pour CommandText @Slaks est correct.
OriginalL'auteur Imran Hasan