簡體   English   中英

如果只有一些文本框為空且有些文本框已填滿,如何使用文本框中的值更新sql server數據庫中的數據?

[英]How to update data in a sql server database with values from textboxes when only some of the textboxes are empty and some are filled?

我們的aspx頁面上有一個表單,其中包含許多文本框。 我們想在我們的sql server數據庫中更新幾個表,並在這些文本框中輸入值,但是如果任何文本框留空,我們希望保留該列的數據,目前它不接受空值。

如果所有文本框都已填充,它將正常運行,否則,我們會收到錯誤:輸入字符串的格式不正確。

單擊提交按鈕時觸發的代碼:

    protected void buttonClicked(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["G4StowawaysConnectionString"].ConnectionString;

        SqlConnection conn = new SqlConnection(CS);

        conn.Open();

        String sql5 = "" ;

        if (!@BalanceOutstanding.Text.Equals(null) | !@Comments.Text.Equals(null))
        {

        sql5 += "UPDATE BookingView SET ";

        if (!@BalanceOutstanding.Text.Equals(null))
        {
            sql5 += " [Balance_Outstanding]=@BalanceOutstanding,";
        }

        if (!@Comments.Text.Equals(null))
        {
            sql5 += " [Comments]=@Comments ";
        }

        sql5 += "WHERE [Booking_Ref] = @BookingRef;";

        }


        if (!@BoatID.Text.Equals(null) | !@SpecialRequests.Text.Equals(null) | !@LeadPassenger.Text.Equals(null) | !@Duration.Text.Equals(null) | !@Pets.Text.Equals(null) | !@Children.Text.Equals(null) | !@Passengers.Text.Equals(null))
        {

        sql5 += "UPDATE vBoat_Booking SET";

        if (!@BoatID.Text.Equals(null))
        {
            sql5 += " [BoatID]=@BoatID,";
        }

        if (!@SpecialRequests.Text.Equals(null))
        {
            sql5 += " [Special_Request]=@SpecialRequests,";
        }

        if (!@LeadPassenger.Text.Equals(null))
        {
            sql5 += " [Lead_PassengerID]=@LeadPassenger,";
        }

        if (!@Duration.Text.Equals(null))
        {
            sql5 += " [Duration_In_Hours]=@Duration,";
        }

        if (!@Pets.Text.Equals(null))
        {
            sql5 += " [Number_of_pets]=@Pets,";
        }

        if (!@Children.Text.Equals(null))
        {
            sql5 += " [Number_of_children]=@Children,";
        }

        if (!@Passengers.Text.Equals(null))
        {
            sql5 += " [Number_of_passengers]=@Passengers ";
        }

        sql5 += "WHERE [Booking_Ref] = @BookingRef;";

        }


        SqlCommand cmd2 = new SqlCommand(sql5, conn);

        //add our parameters to our command object  


     cmd2.Parameters.AddWithValue("@BookingRef", Convert.ToInt32(BookingRef.Text));
            cmd2.Parameters.AddWithValue("@BoatID", Convert.ToInt32(BoatID.Text));
            cmd2.Parameters.AddWithValue("@LeadPassenger", Convert.ToInt32(LeadPassenger.Text));
            cmd2.Parameters.AddWithValue("@Duration", Convert.ToInt32(Duration.Text));
            cmd2.Parameters.AddWithValue("@Pets", Convert.ToInt32(Pets.Text));
            cmd2.Parameters.AddWithValue("@Children", Convert.ToInt32(Children.Text));
            cmd2.Parameters.AddWithValue("@Passengers", Convert.ToInt32(Passengers.Text));
            cmd2.Parameters.AddWithValue("@SpecialRequests", SpecialRequests.Text);
            cmd2.Parameters.AddWithValue("@BalanceOutstanding", Convert.ToInt32(BalanceOutstanding.Text));
            cmd2.Parameters.AddWithValue("@Comments", Comments.Text);

            cmd2.ExecuteNonQuery();

            conn.Close();


    }

您在if塊中使用尾隨逗號,並且應使用前導逗號。 除了添加到動態SQL的第一個字段。 您可以使用bool來確定代碼段是否需要前導逗號。

另一種選擇是在存儲過程中創建動態SQL。 如果這樣做,您將需要使用與C#代碼中使用的參數非常相似的參數。 使用sp_executesql而不是exec。 這允許您定義參數並為這些參數賦值。 轉到此處查看將sp_executesql與參數一起使用的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM