代码之家  ›  专栏  ›  技术社区  ›  Shyju

企业库重写代码以保存数据和返回值

  •  0
  • Shyju  · 技术社区  · 15 年前

    如果没有企业数据库,我将使用下面的代码向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();
    }
    

    如何在企业数据库中执行相同的操作?我想从被调用的存储过程返回值。

    3 回复  |  直到 9 年前
        1
  •  1
  •   Vadim    15 年前

    你也可以用同样的方法来做。”您的rdb“应该在配置文件中定义。

    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"));
    
        2
  •  0
  •   Adauto    13 年前

    您可以使用executeNonQuery的重载来缩短它:

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

    在哪里? 保存用户 是进程名和 目标位置 是输入参数

        3
  •  0
  •   HaveNoDisplayName    9 年前

    在执行查询之前,必须向命令对象添加返回参数。

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