开发者

Enterprise library Rewriting the Code to Save data and return value

开发者 https://www.devze.com 2022-12-30 12:53 出处:网络
Without Enterprise Data library,I am using the below code to insert some thing to DB and reading the return value from that

Without Enterprise Data library,I am using the below code to insert some thing to DB and reading the return value from that

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;
     my开发者_C百科Command.Parameters.Add(returnValue);

     myConnection.Open();
     myCommand.ExecuteNonQuery();
     result = Convert.ToInt32(returnValue.Value);
     myConnection.Close();
}

How can i do the same in Enterprise Datalibrary ? I want to return value from the stored procedure being called.


You can try to do it in similar way. "YourDb" should be defined in your config file.

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"));


You can shorten it using an overload of ExecuteNonQuery:

Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("YourDb");
db.ExecuteNonQuery("SaveUser", objUser.Location);
int result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));

where SaveUser is the proc name and objUser.Location is the input parameter


You must add return parameter to the command object before executing the query.

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"));
0

精彩评论

暂无评论...
验证码 换一张
取 消