/// <summary>
 /// 找出 <paramref name="command"/> 脚本中定义的参数列表,并将 <paramref name="parameterValues"/> 作为参数值分配给该参数列表。
 /// </summary>
 /// <param name="database">表示一个 <see cref="Microsoft.Practices.EnterpriseLibrary.Data.Database"/> 对象。</param>
 /// <param name="command">用于查找参数列表的 <see cref="DbCommand"/> 对象。</param>
 /// <param name="parameterValues">用于作为参数值分配给 <paramref name="command"/> 参数列表的值集合。</param>
 public static void AssignParameters(Database database, DbCommand command, params object[] parameterValues)
 {
     if (command.CommandType == CommandType.StoredProcedure)
     {
         database.AssignParameters(command, parameterValues);
         return;
     }
     DiscoverParameters(database, command);
     if (command.Parameters.Count != parameterValues.Length)
     {
         throw new InvalidOperationException("command 对象中的参数集合元素数量与 parameterValues 元素数量不一致。");
     }
     for (int i = 0; i < parameterValues.Length; i++)
     {
         IDataParameter parameter = command.Parameters[i];
         string parameterName = database.BuildParameterName(parameter.ParameterName);
         command.Parameters[parameterName].Value = parameterValues[i] ?? DBNull.Value;
     }
 }
Example #2
0
 /// <summary>
 /// 执行存储过程,获得存储过程的返回值[注:必须在目标存储过程中设置return返回值,否则始终返回0]
 /// </summary>
 /// <param name="dc">存储过程语句</param>
 /// <param name="db">操作目标数据库</param>
 /// <returns></returns>
 public static int RunProcedureWithResult(DbCommand dc, Database db)
 {
     int result = 0;
     try
     {
         PrepareCommand(ref dc, db);
         db.AddParameter(dc, "ReturnValue", DbType.Int32, ParameterDirection.ReturnValue, string.Empty, DataRowVersion.Default, null);
         db.ExecuteNonQuery(dc);
         result = (int)dc.Parameters[db.BuildParameterName("ReturnValue")].Value;
     }
     catch (System.Exception e)
     {
         throw new Exception(e.Message);
     }
     return result;
 }
 /// <summary>
 /// 根据指明的变量名称,创建一个适用于当前数据库类型(依据当前对象的 <see cref="DbProviderFactory"/> 属性所创建的 <see cref="DbConnection"/>)的变量参数名称。
 /// </summary>
 /// <param name="database">表示当前 <see cref="Microsoft.Practices.EnterpriseLibrary.Data.Database"/> 对象。</param>
 /// <param name="name">指明的用于包装变量参数名称。</param>
 /// <returns>一个表示可用于表示当前数据库类型(依据当前对象的 <see cref="DbProviderFactory"/> 属性所创建的 <see cref="DbConnection"/>)的变量参数名称。</returns>
 public static string BuildParameterName(Database database, string name)
 {
     return database.BuildParameterName(name);
 }