首页 > 解决方案 > C# ,SQL 仅当 txtBasoC.Text > 0 时才插入这些 SqlCommand,如果不是,则跳过并执行下一个 SqlCommand

问题描述

好吧,我有 3 个文本框,每个 em 都在单击时为每一行插入

我试图在单击中插入多行,但如果文本框为 0,我不希望它们被插入,如果是 null,则只需将其跳到下一行

这是我尝试过的,希望你能明白我在做什么

    int valueBSC, valuesBSM, valueBSB;

                bool validBSC = int.TryParse(txtBasoC.Text, out valueBSC) && valueBSC > 0;
                bool validBSM = int.TryParse(txtBasoM.Text, out valuesBSM) && valuesBSM > 0;
                bool validBSB = int.TryParse(txtBasoB.Text, out valueBSB) && valueBSB > 0;

//BasoC
            if (!validBSC)
            {
                // prompt the user to do it right
                con.Open();
                SqlCommand cmd3 = new SqlCommand("INSERT INTO Transaksi (idStruk,Product_Name,Jumlah,TotalHarga,Tanggal_Transaksi) VALUES (@idStruk,@Product_Name,@Jumlah,@TotalHarga,@Tanggal_Transaksi)", con);
                cmd3.Parameters.Add("@idStruk", lblidstruk.Text);
                cmd3.Parameters.Add("@Product_Name", chkmkn2.Text);
                cmd3.Parameters.Add("@Jumlah", valueBSC);
                cmd3.Parameters.Add("@TotalHarga", TbasoC);
                cmd3.Parameters.Add("@Tanggal_Transaksi", lbldate.Text);
                cmd3.ExecuteNonQuery();
                con.Close();
                return;
            }

            if (!validBSM)
            {
                //BasoMie
                con.Open();
                SqlCommand cmd4 = new SqlCommand("INSERT INTO Transaksi (idStruk,Product_Name,Jumlah,TotalHarga,Tanggal_Transaksi) VALUES (@idStruk,@Product_Name,@Jumlah,@TotalHarga,@Tanggal_Transaksi)", con);
                cmd4.Parameters.Add("@idStruk", lblidstruk.Text);
                cmd4.Parameters.Add("@Product_Name", chkmkn3.Text);
                cmd4.Parameters.Add("@Jumlah", valuesBSM);
                cmd4.Parameters.Add("@TotalHarga", Tbasom);
                cmd4.Parameters.Add("@Tanggal_Transaksi", lbldate.Text);
                cmd4.ExecuteNonQuery();
                return;
            }
            con.Close();


            if (!validBSB)
            {
                //Baso Bihun
                con.Open();
                SqlCommand cmd5 = new SqlCommand("INSERT INTO Transaksi (idStruk,Product_Name,Jumlah,TotalHarga,Tanggal_Transaksi) VALUES (@idStruk,@Product_Name,@Jumlah,@TotalHarga,@Tanggal_Transaksi)", con);
                cmd5.Parameters.Add("@idStruk", lblidstruk.Text);
                cmd5.Parameters.Add("@Product_Name", chkmkn4.Text);
                cmd5.Parameters.Add("@Jumlah", valueBSB);
                cmd5.Parameters.Add("@TotalHarga", Tbasob);
                cmd5.Parameters.Add("@Tanggal_Transaksi", lbldate.Text);
                cmd5.ExecuteNonQuery();
                return;
            }

            con.Close();

有什么想法可以改变/修改以制作像这样的同类吗?

使用参数向每列插入值,但我有超过 3 行要同时插入.. 但如果列 Jumlah 为 0 或没有,则跳过 SqlCommand 插入并继续下一个..

标签: c#sql

解决方案


您可以将文本框放在一个数组中,以便循环:

TextBox[] txts = new TextBox[] {txtBasoC, txtBasoM, txtBasoB};

foreach(TextBox txt in txts)
{
    int result = 0;
    if(int.TryParse(txt.Text, out result) && result > 0)
    {
         //Do your insert
    }   
}

另请注意,我将它们放入数组中的方式是因为我不知道您的表单是如何设计的以及文本框在哪里,例如,如果它们位于名为的 groupbox 中,group您可以这样做:

foreach(TextBox txt in group.Controls.OfType<TextBox>().ToArray())
{
    int result = 0;
    if(int.TryParse(txt.Text, out result) && result > 0)
    {
         //Do your insert
    }   
}

推荐阅读