【问题标题】:Passing values to a stored procedure将值传递给存储过程
【发布时间】:2014-05-20 09:57:45
【问题描述】:

我在 SQL Server 中有一个存储过程,它有很多字段,其中一些在参数列表中进行了初始化。那么我需要从 asp.net 传递这些参数的值还是绕过它们?请参阅下面的代码以了解我的意思。

存储过程:

ALTER PROCEDURE [dbo].[ADD_SMS_InQueue]
(
   @ToMobNo varchar(15),
   @Message nvarchar(2000),
   @encoding_Type int = 0,
   @IsAlertSMS bit = 0,
   @priority int = 2,
   @SendByUser int = 1,
   @MessageType tinyint = 0
)
AS
   BEGIN TRY
   BEGIN TRANSACTION
       INSERT INTO MessageQueue ([QueueDateTime], Client_ID, ToMobileNo, 
            [Message], LongMessageType_ID, EncodingType_ID, AlertMessage, LocalSMS, Priority_ID, Attempts, TotalAttempts, Status_ID, SendByUser, MessageType)
       VALUES (GETDATE(), 1, @ToMobNo, @Message, 3, @encoding_Type, @IsAlertSMS, 1, @priority, 0, 0, 1, @SendByUser, @MessageType)

       COMMIT TRANSACTION
   END TRY
   BEGIN CATCH
        ROLLBACK TRANSACTION
   END CATCH

用于发送值的 C# 代码:

public class MessageQueueBizz
{
        public string ToMobileNo { get; set; }
        public string Message { get; set; }

        public MessageQueueBizz(string ToMobileNo, string Message) 
        {
            this.ToMobileNo = ToMobileNo;
            this.Message = Message;
        }
    }
    public class ManageQueueBizz 
    {
        public int Insert(MessageQueueBizz MessageQueueBizz)
        {
            SqlCommand cmd = new SqlCommand("ADD_SMS_InQueue", DataBaseConnectionSMSDB.OpenConnection());
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter pToMobileNo = new SqlParameter("@ToMobNo", MessageQueueBizz.ToMobileNo);
            cmd.Parameters.Add(pToMobileNo);
            SqlParameter pMessage = new SqlParameter("@Message", MessageQueueBizz.Message);
            cmd.Parameters.Add(pMessage);

            int result = Convert.ToInt32(cmd.ExecuteNonQuery());

            DataBaseConnectionSMSDB.CloseConnection();

            return result;
        }

【问题讨论】:

  • 您的问题到底是什么?代码看起来不错...
  • 为什么不直接测试一下??在您提出这个问题的时间里,您本可以轻松地对此进行测试。

标签: c# sql asp.net sql-server ado.net


【解决方案1】:

您应该不需要包含已在存储过程中初始化的参数

【讨论】:

  • 您是否遇到任何异常或错误?如果您发布它们,我们可以尝试提供帮助,但是是的,代码看起来不错。