C# 如何在按钮单击事件中执行if-else条件语句
我这里有个情况。我需要根据用户在窗口窗体上提供的内容向表中插入值。 如果一个好的东西不存在,并且获得了超过需要的东西,那么多余的东西必须输入到一个名为“BulkAvailable”的表中,这就是我的代码中存在一个大的地方,因为当我注释掉这部分时,代码运行良好。 请找到下面的代码C# 如何在按钮单击事件中执行if-else条件语句,c#,C#,我这里有个情况。我需要根据用户在窗口窗体上提供的内容向表中插入值。 如果一个好的东西不存在,并且获得了超过需要的东西,那么多余的东西必须输入到一个名为“BulkAvailable”的表中,这就是我的代码中存在一个大的地方,因为当我注释掉这部分时,代码运行良好。 请找到下面的代码 try { SqlConnection con = new SqlConnection("Data Source=PV10\\LOCALSER
try
{
SqlConnection con = new SqlConnection("Data Source=PV10\\LOCALSERVER;Initial Catalog=SmallSoftwareDB;Integrated Security=True;Pooling=False");
con.Open();
float a = float.Parse(textBox8.Text, System.Globalization.CultureInfo.InvariantCulture);
int b = int.Parse(textBox9.Text);
float c = a * b;
var T = c.ToString(System.Globalization.CultureInfo.InvariantCulture);
float x = float.Parse(textBox4.Text, System.Globalization.CultureInfo.InvariantCulture);
int z = int.Parse(textBox3.Text);
float y = x * z;
var total = y.ToString(System.Globalization.CultureInfo.InvariantCulture);
int d = b - z;
string uba = "insert into BulkSale(ProductName, ProductSource, Date, Quantity, Type, UnitPrice, Total, Nature) values('" + textBox1.Text + "', '" + textBox2.Text + "', '" + dateTimePicker1.Value + "', '" + textBox3.Text + "', '" + textBox6.Text + "', '" + textBox4.Text + "', '" + textBox5.Text + "', '"+textBox7.Text+"')";
string A = "insert into BulkInput(ProductName, ProductSource, Date, Quantity, Type, UnitPrice, Total, Nature) values('"+textBox1.Text+"','"+textBox2.Text+"','"+dateTimePicker1.Value+"','"+b+"','"+textBox6.Text+"','"+a+"','"+c+"', '"+textBox7.Text+"')";
SqlCommand cmd = new SqlCommand(uba, con);
SqlCommand X = new SqlCommand(A, con);
cmd.ExecuteNonQuery();
X.ExecuteNonQuery();
try
{
if (int.Parse(textBox9.Text) > int.Parse(textBox3.Text))
{
string B = "insert into BulkAvailable(ProductSource,ProductName,Date,Quantity,Type) values('" + textBox2.Text + "','" + textBox1.Text + "','" + dateTimePicker1.Text + "','" + d + "','" + textBox6.Text + "')";
SqlCommand Bc = new SqlCommand(B, con);
Bc.ExecuteNonQuery();
}
else
{
MessageBox.Show("You successfully Bought and Sold", " ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
catch (Exception aze)
{
MessageBox.Show(aze.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
MessageBox.Show("Operation Successfully Executed", " ", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
}
catch (Exception er)
{
MessageBox.Show(er.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
当我运行代码时,它会返回一条异常消息:
“二进制数据字符串将被截断。语句已终止”您应该检查数据库中的字段。此错误意味着您正在尝试插入长度超过字段边界的字符串 因此,例如,如果将db field
ProductName
定义为varchar(50)
,并尝试插入包含52个字符的值,则会收到此错误
我们无法告诉您发生这种情况的确切字段,您应该手动检查。您可以尝试在数据库中执行查询,并查看错误是否给出了字段名,但在过去这种情况不会发生
您应该对字段执行一些验证检查,如果它们超过某个
长度
显示错误消息或使用子字符串
方法剪切字符串。在哪个行号中?您需要重写此项以使用,您很容易受到SQL注入的影响。(在其中一个文本框中放置一个”
,看看会发生什么)错误是因为您试图将文本放入一个超过该列最大长度的表列中。您泄漏了资源,因为您留下了很多未经处理的内容,请不要尝试此操作!!!想象一个恶意用户输入”);将表格输入
放入文本框7。你认为会发生什么?试着在心里构造字符串A
,帮助自己认识到从最终用户提供的字符串构造SQL的严重危险。希望OP能看到一个更大的问题。。。也就是说,他写的东西到处都有SQL注入漏洞。如果(int.Parse(textBox9.Text)>int.Parse(textBox3.Text)){string B=“insert-into-BulkAvailable(ProductSource,ProductName,Date,Quantity,Type)值(“+textBox2.Text+”,“+textBox1.Text+”,“+dateTimePicker1.Text+“,”,“+d+”,“+textBox6.Text+”);“SqlCommand Bc=new-SqlCommand(B,con);Bc.ExecuteNonQuery();}@Indra所以请检查所有接受此文本框的字段。文本并在数据库中查看它们的定义。就像我说的,我们不能告诉您是哪个字段造成了问题。您应该自己检查。谢谢大家。我会交叉检查作为建议。我会保留你们所有人posted@Indra如果答案对你有帮助,你可以把它标记为正确。