C#を使用してSQLデータベースにデータを送信するVisual Studio Webアプリケーションの問題(cmd.ExecuteNonQuery();)

chaoswolf71

cmd.ExecuteNonQuery()を中心に展開するコードに問題があります。およびエラー:スカラー変数「@ drID1」を宣言する必要があります。

初めてボタンをクリックすると、このコードもリンクされますが、もう一度クリックすると、上記のエラーが発生します。私はこのコードでいくつかの異なることをいじったので、おそらくそこにはいくつかの悪い習慣がありますが、私はまだC#に比較的慣れていないので、我慢してください。

最初は完全に動作し、2回目は壊れてしまうのはなぜですか?

using (SqlConnection connection = new SqlConnection("User id = ******;" +
                                                                        "pwd = *******;" +
                                                                        "Data Source = *******;" +
                                                                        "persist security info = *******;" +
                                                                        "Initial Catalog = *******;"))
        {
            //***************************SQL COMMAND**************************
            SqlCommand cmd = new SqlCommand("INSERT INTO ******* (SMSID, RecipientNo, Message, TimeDateSent, Balance, Pending, Code, ErrMsg, drID1, drDestination1, drText1, drReceived1, drCode1, drHasError1, drErrMsg1, drID2, drDestination2, drText2, drReceived2, drCode2, drHasError2, drErrMsg2, Sender) VALUES (@SMSID, @RecipientNo, @Message, @TimeDateSent, @Balance, @Pending, @Code, @ErrMsg, @drID1, @drDestination1, @drText1, @drReceived1, @drCode1, @drHasError1, @drErrMsg1, @drID2, @drDestination2, @drText2, @drReceived2, @drCode2, @drHasError2, @drErrMsg2, @Sender)");

            cmd.CommandType = CommandType.Text;
            cmd.Connection = connection;
            //**************************Input Values**************************
            cmd.Parameters.AddWithValue("@SMSID", sendResult.MessageId);
            cmd.Parameters.AddWithValue("@RecipientNo", TextBox1.Text);
            cmd.Parameters.AddWithValue("@Message", TextBox2.Text);
            cmd.Parameters.AddWithValue("@TimeDateSent", DateTime.Now);
            cmd.Parameters.AddWithValue("@Balance", sendResult.MessageBalance);
            cmd.Parameters.AddWithValue("@Pending", sendResult.PendingMessages);
            cmd.Parameters.AddWithValue("@Code", sendResult.Code);
            //Handle error message
            if (sendResult.HasError)
            {
                cmd.Parameters.AddWithValue("@ErrMsg", sendResult.ErrorMessage);
            }
            else
            {
                cmd.Parameters.AddWithValue("@ErrMsg", "");
            }
            //Delivery Receipt handling
            var deliveryReceipts = client.GetDeliveryReceipts();
            if (deliveryReceipts.Length > 0)
            {
                //Counter var
                int i = 1;
                //For each Delivery Receipt do this: (there should be only 1 or 2)
                foreach (var deliveryReceipt in deliveryReceipts)
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "DeliveryReceipt Text", "alert('" + i + " - " + deliveryReceipt.Text + "');", true);
                    int c = deliveryReceipts.Count();
                    if (i == 1)
                    {
                        cmd.Parameters.AddWithValue("@drID1", deliveryReceipt.Id);
                        cmd.Parameters.AddWithValue("@drDestination1", deliveryReceipt.Destination);
                        cmd.Parameters.AddWithValue("@drText1", deliveryReceipt.Text);
                        cmd.Parameters.AddWithValue("@drReceived1", deliveryReceipt.Received);
                        cmd.Parameters.AddWithValue("@drCode1", deliveryReceipt.Code);
                        cmd.Parameters.AddWithValue("@drHasError1", deliveryReceipt.HasError);
                        //Error handling
                        if (deliveryReceipt.HasError == true)
                        {
                            cmd.Parameters.AddWithValue("@drErrMsg1", deliveryReceipt.ErrorMessage);
                        }
                        else if (deliveryReceipt.HasError == false)
                        {
                            cmd.Parameters.AddWithValue("@drErrMsg1", "");
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@drErrMsg1", "");
                        }
                        i++;
                    }
                    else if (i == 2)
                    {
                        if (c >= 2)
                        {
                            cmd.Parameters.AddWithValue("@drID2", deliveryReceipt.Id);
                            cmd.Parameters.AddWithValue("@drDestination2", deliveryReceipt.Destination);
                            cmd.Parameters.AddWithValue("@drText2", deliveryReceipt.Text);
                            cmd.Parameters.AddWithValue("@drReceived2", deliveryReceipt.Received);
                            cmd.Parameters.AddWithValue("@drCode2", deliveryReceipt.Code);
                            cmd.Parameters.AddWithValue("@drHasError2", deliveryReceipt.HasError);
                            //Error Handling
                            if (deliveryReceipt.HasError == true)
                            {
                                cmd.Parameters.AddWithValue("@drErrMsg2", deliveryReceipt.ErrorMessage);
                            }
                            else if (deliveryReceipt.HasError == false)
                            {
                                cmd.Parameters.AddWithValue("@drErrMsg2", "");
                            }
                            else
                            {
                                cmd.Parameters.AddWithValue("@drErrMsg2", "");
                            }
                            i++;
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@drID2", "");
                            cmd.Parameters.AddWithValue("@drDestination2", "");
                            cmd.Parameters.AddWithValue("@drText2", "");
                            cmd.Parameters.AddWithValue("@drReceived2", "");
                            cmd.Parameters.AddWithValue("@drCode2", "");
                            cmd.Parameters.AddWithValue("@drHasError2", "");
                            //Error Handling
                            if (deliveryReceipt.HasError == true)
                            {
                                cmd.Parameters.AddWithValue("@drErrMsg2", deliveryReceipt.ErrorMessage);
                            }
                            else if (deliveryReceipt.HasError == false)
                            {
                                cmd.Parameters.AddWithValue("@drErrMsg2", "");
                            }
                            else
                            {
                                cmd.Parameters.AddWithValue("@drErrMsg2", "");
                            }
                            i++;
                        }
                    }
                }
                i = 1;
            }
            //Execute Query
            cmd.Parameters.AddWithValue("@Sender", System.Security.Principal.WindowsIdentity.GetCurrent().Name);
            connection.Open();
            cmd.ExecuteNonQuery();
        }
    }
}
rclのサイモン
SqlCommand cmd = new SqlCommand("INSERT INTO ******* (SMSID, RecipientNo, 
            Message, TimeDateSent, Balance, Pending, Code, ErrMsg, drID1,
            drDestination1, drText1, drReceived1, drCode1, drHasError1,
             drErrMsg1, drID2, drDestination2, drText2, drReceived2, 
            drCode2, drHasError2, drErrMsg2, Sender) 
VALUES (@SMSID, @RecipientNo, @Message, @TimeDateSent, @Balance, @Pending,
             @Code, @ErrMsg, @drID1, @drDestination1, @drText1, 
            @drReceived1, @drCode1, @drHasError1, @drErrMsg1, @drID2, 
            @drDestination2, @drText2, @drReceived2, @drCode2,
             @drHasError2, @drErrMsg2, @Sender)");

それがあなたのコマンドであり、その前に@が付いているものはすべて、SqlCommandへのパラメーターとして指定された値を持っている必要があります。@ErrMsgまでのパラメーターのみを追加します。次は@ drID1ですが、エラーメッセージにあるように、定義されていません。

これらのパラメーターの値がnullの場合でも、@名とnullの値を持つパラメーターを追加する必要があります。

配達領収書がない場合、これらのパラメータは作成されず、このエラーが発生します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ