Exécuter SQL Paramétrée StoredProcedure via ODBC
À partir de l'intérieur d'un C#, WinForms application que je dois exécuter une Procédure Stockée paramétrée sur une MS SQL Server Express. La Connexion de Base de données fonctionne, la Procédure fonctionne, mais j'obtiens un Message d'Erreur:
42000: Paramètre Manquant '@KundenEmail'
bien que je suis sûr que j'ai ajouté le paramètre correctement. Peut-être que certains d'entre vous pourraient avoir un coup d'oeil - je ne sais pas quoi chercher plus...
OdbcConnection ODBCConnection = new OdbcConnection();
try
{
ODBCConnection.ConnectionString = ODBCConnectionString;
ODBCConnection.Open();
}
catch (Exception DatabaseConnectionEx)
{
if (ODBCConnection != null)
ODBCConnection.Dispose();
//Error Message
return null;
}
OdbcParameter ODBCParameter = new OdbcParameter("@KundenEmail", OdbcType.NChar, 50);
ODBCParameter.Value = KundenEmail;
OdbcCommand ODBCCommand = new OdbcCommand("getDetailsFromEmail", ODBCConnection);
ODBCCommand.CommandType = CommandType.StoredProcedure;
ODBCCommand.Parameters.Add(ODBCParameter);
DataTable DataTable = new DataTable();
OdbcDataAdapter ODBCDatadapter = new OdbcDataAdapter(ODBCCommand);
ODBCDatadapter.Fill(DataTable);
ODBCDatadapter.Dispose();
ODBCConnection.Close();
ODBCConnection.Dispose();
C'est le message d'erreur que je reçois:
ERREUR [4200][Microsoft][ODBC SQL Server]La Procédure ou la méthode
'getDetailsFromEmail' attend l '@KundenEmail'-paramètre, qui
n'a pas été fourni.
Ah, j'ai raté la chaîne de connexion
private static String ODBCConnectionString = "Driver={SQL Server};Server=TESTSRV\\SQLEXPRESS;Database=TestDatabase;";
Des idées? Merci à l'avance.
Vous devez vous connecter pour publier un commentaire.
Bien j'ai maintenant réussi à résoudre le problème sur mon propre, avec l'aide de MSDN-documentation.
La bonne instruction à exécuter une procédure stockée via ODBC est comme suit:
Néanmoins, merci pour votre aide Thorsten.
Comment Exécuter SQL Paramétrée Procédures Stockées en Utilisant ODBC .NET Fournisseur et Visual C# .NET
Lors de l'exécution d'une procédure stockée paramétrée à l'aide de l'ODBC .NET Fournisseur est un peu différent de l'exécution de la même procédure en utilisant le SQL ou le Fournisseur OLE DB, il y a une différence importante: la procédure stockée doit être appelées en utilisant la syntaxe d'APPEL ODBC plutôt que le nom de la procédure stockée.
La Syntaxe D'Appel Des Exemples
Voici un exemple de la syntaxe d'appel d'une procédure stockée qui attend un paramètre d'entrée:
Voici un exemple de la syntaxe d'appel d'une procédure stockée qui attend un paramètre en entrée et renvoie un paramètre de sortie et une valeur de retour. Le premier espace réservé représente la valeur de retour:
Exemple De Code
De toute façon c'est mieux de votre code devrait ressembler à ceci:
Mais plutôt préférable d'utiliser SqlConnection/SqlCommand/SqlDataAdapter au lieu de ODBC, types. La syntaxe sera toujours le même.
Ne pas utiliser
ODBCConnection
pour se connecter à un Serveur SQL server. Utiliser la fonction "normale"SqlConnection
,SqlCommand
, etc. Les uns sont le fait de travailler avec SQL Server.EDIT: Aussi, vous devez utiliser le
SqlConnectionStringBuilder
à l'assemblée de la chaîne de connexion. C'est beaucoup moins sujette aux erreurs que de mettre l'ensemble de la chaîne de connexion dans un fichier de configuration ou de le créer à la main.ODBCCommand.Parameters.AddWithValue(...)
? Ne qui existent pour OdbcCommands? L'exigence de l'utilisation de la connexion ODBC n'a pas de sens si vous vous connectez à SQL Server directement. Juste par curiosité: ça fonctionne lorsque vous utilisez l'respectivesSql...
classes?Sql...
-Classes. Eh bien, la Connexion ODBC doit être utilisé, car il n'est pas sûr du système de base de données sera utilisée.