J'ai hérité d'une fonction dans une application ASP.NET (C#) où l'auteur utilisait le Microsoft.Practices.EnterpriseLibrary.Data library
, mais il m'a été demandé de le modifier afin qu'il utilise System.Data.OracleClient
. Cette fonction utilise une procédure stockée dans une base de données. itemName
et openDate
sont des paramètres de chaîne pris en charge par la fonction. PKG_AUCTION_ITEMS.IsAuctionItem
est le nom de la fonction de procédure stockée.Conversion de l'objet DbCommand en objet OracleCommand
Voici le code que j'ai reçu:
string result = String.Empty;
Database db = DatabaseFactory.CreateDatabase("OraData");
using (DbCommand cmdDB = db.GetStoredProcCommand("PKG_AUCTION_ITEMS.IsAuctionItem"))
{
db.AddInParameter(cmdDB, "vItemName", DbType.String, itemName);
db.AddInParameter(cmdDB, "vOpenDate", DbType.String, openDate);
db.AddParameter(cmdDB, "ret", DbType.String, 2, ParameterDirection.ReturnValue, false, 0, 0, null, DataRowVersion.Current, null);
db.ExecuteNonQuery(cmdDB);
result = cmdDB.Parameters["ret"].Value.ToString();
}
Voici mon code :(connstr
est la chaîne de connexion)
string result = String.Empty;
OracleConnection conn = new OracleConnection(connstr);
OracleCommand cmd = new OracleCommand("PKG_AUCTION_ITEMS.IsAuctionItem",conn);
myCmd.CommandType = CommandType.StoredProcedure;
using (myCmd)
{
myCmd.Parameters.AddWithValue("vItemName", itemName);
myCmd.Parameters.AddWithValue("vOpenDate", openDate);
myCmd.Parameters.AddWithValue("ret", ???);
myCmd.ExecuteNonQuery();
result = myCmd.Parameters["ret"].Value.ToString();
}
Je ne comprends pas ce que la différence entre AddInParameter et AddParameter est , et ce que cette ligne fait:
db.AddParameter(cmdDB, "ret", DbType.String, 2, ParameterDirection.ReturnValue, false, 0, 0, null, DataRowVersion.Current, null);
Suis-je sur la droite tr Ack? quelqu'un peut-il aider s'il vous plait? Merci
Pourquoi avez-vous demandé de le changer? Vous devriez avoir pu modifier le fichier de configuration pour utiliser Oracle. – CAbbott
La bibliothèque Microsoft.Practice n'étant pas une bibliothèque standard utilisée ici, le moteur de génération ne l'a pas. Pour cette raison, le projet ne peut pas être construit sur le serveur. – zohair
Vous devez probablement installer Enterprise Library sur votre serveur Web pour le faire fonctionner. – Juri