c# - 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 插入并继续下一个..
解决方案
您可以将文本框放在一个数组中,以便循环:
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
}
}
推荐阅读
- codeigniter - 如何在视图解析器中访问循环项的属性?
- c# - 如何使用 AutoMapper 9.0 在 IValueResolver 中执行自定义映射
- mysql - 在 mySQL 中,我将如何测试 NOW() 是否在导致即将到来的时间戳的间隔内并且不早于时间戳?
- php - 在 INNER JOINed 表中指定列
- clojure - I can't understand the following clojure.spec error
- python - 无法在 Google 的 COLAB 上将我的数据框保存/导出为 CSV
- selenium - 如何处理绝对xpath的变化?
- c++ - 无法在 clang 中 dyn_cast 指向 DeclRefExpr 的表达式指针
- python - 使用 Python 从 XAML 中提取数据
- php - 发布后如何修复表单重置