J'ai un ensemble de procédures stockées que j'utilise pour remplir une CheckBoxList ASP.Net. Lors de l'exécution de cette procédure à partir du code en tant que {CALL ProcedureName (params); } avec le type défini en tant que procédure stockée, il semble que seul un résultat partiel est renvoyé (ie plusieurs colonnes du résultat réel sont manquantes.)Le résultat de la procédure stockée MySQL ODBC est manquant. Colonnes
Si je copie le CommandText de la requête (après avoir utilisé un point d'arrêt pour obtenir le texte exact envoyé) et l'exécuter directement dans Navicat (ou toute autre interface graphique MySQL), je reçois toutes les colonnes attendues.
Voici le code qui ne fonctionne pas:
using (OdbcCommand command = OdbcConnection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "{ " + string.Format(StoredProcedureCall, foundationId, fpids, "", "", "NULL", "2001/01/02", "2001/01/01", "*") +
" }";
using (OdbcDataReader reader = command.ExecuteReader())
{
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
}
}
Si je change le code à la suivante mais il commence à travailler (uniquement en ajoutant l'autre à l'aide):
using (OdbcConnection)
using (OdbcCommand command = OdbcConnection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "{ " + string.Format(StoredProcedureCall, foundationId, fpids, "", "", "NULL", "2001/01/02", "2001/01/01", "*") +
" }";
using (OdbcDataReader reader = command.ExecuteReader())
{
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
}
}
Qu'est-ce passe ici?
Pour référence est ici la propriété OdbcConnection:
public static OdbcConnection OdbcConnection
{
get
{
// If we have no connection or our connection isn't open
if (null == odbcConnection || ConnectionState.Open != odbcConnection.State)
{
odbcConnection = new OdbcConnection(BaseAccess.DBConnectionString);
odbcConnection.Open();
}
return odbcConnection;
}
}
Si votre application utilise les mêmes informations de connexion que Navicat? –
Oui, ils s'exécutent avec le même utilisateur/mot de passe – mikeschuld
Comment avez-vous découvert qu'il manque des colonnes? qu'est-ce que vous utilisez pour stocker les données envoyées par le SP? – manji