没有企业数据库,我使用下面的代码向DB插入一些东西并从中读取返回值
int result = 0;
using (SqlConnection myConnection =
new SqlConnection(AppConfiguration.ConnectionString))
{
SqlCommand myCommand = new SqlCommand("SaveUser", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@location", objUser.Location);
DbParameter returnValue;
returnValue = myCommand.CreateParameter();
returnValue.Direction = ParameterDirection.ReturnValue;
myCommand.Parameters.Add(returnValue);
myConnection.Open();
myCommand.ExecuteNonQuery();
result = Convert.ToInt32(returnValue.Value);
myConnection.Close();
}
我如何在企业数据库中执行相同的操作?我想从被调用的存储过程中返回值。
答案 0 :(得分:1)
您可以尝试以类似的方式执行此操作。应该在配置文件中定义“YourDb”。
int result = 0;
Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("YourDb");
DbCommand myCommand = db.GetStoredProcCommand("SaveUser");
db.AddInParameter(myCommand, "location", DbType.String, objUser.Location);
db.ExecuteNonQuery(myCommand);
result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));
答案 1 :(得分:0)
您可以使用ExecuteNonQuery的重载缩短它:
Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("YourDb");
db.ExecuteNonQuery("SaveUser", objUser.Location);
int result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));
其中 SaveUser 是proc名称, objUser.Location 是输入参数
答案 2 :(得分:0)
在执行查询之前,必须将return参数添加到命令对象。
db.AddParameter(myCommand, "returnvalue", DbType.String, ParameterDirection.ReturnValue, null, DataRowVersion.Default, null);
--Execute the query here using ExecuteNonQuery
result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));