【发布时间】:2009-09-18 20:28:45
【问题描述】:
我在作者使用Microsoft.Practices.EnterpriseLibrary.Data library 的 ASP.NET (C#) 应用程序中继承了一个函数,但有人要求我对其进行更改,以便它使用System.Data.OracleClient。该函数使用存储过程形成数据库。 itemName、openDate是函数传入的字符串参数。PKG_AUCTION_ITEMS.IsAuctionItem是存储过程函数名。
这是我收到的代码:
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();
}
这是我的代码:(connstr 是连接字符串)
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();
}
我不明白 AddInParameter 和 AddParameter 有什么区别,这行是做什么的:
db.AddParameter(cmdDB, "ret", DbType.String, 2, ParameterDirection.ReturnValue, false, 0, 0, null, DataRowVersion.Current, null);
我在正确的轨道上吗?有人可以帮忙吗? 谢谢
【问题讨论】:
-
为什么要求您更改它?您应该能够更改配置文件以使用 Oracle。
-
这里使用的Microsoft.Practice库不是标准库,所以构建引擎没有。因此无法在服务器上构建项目。
-
您可能必须在您的网络服务器上安装 Enterprise Library 才能使其工作。
标签: c# asp.net oracle oracleclient