我的代码如下
受保护的void Button1_Click(对象发送者,EventArgs e)
{
SqlConnection con =新的SqlConnection(mycon);
**strong text**
string str = "insert into CustomerHistoryAD(customerId,checkNumber,bank,city,date,amount) values('" + tb_customerID.Text + "','" + tb_CheckNumber.Text + "','" + tb_bank.Text + "','" + tb_city.Text + "','" + tb_date.Text + "','" + tb_Amount.Text + "')";
sqlq(str);
lbl0.Text = " DataSaved Successfully ";
tb_Notification.Text = "Record of Customer ID '"+tb_customerID.Text+"' is Submitted";
}
protected void Button2_Click(object sender, EventArgs e)
{
string query = "insert into notification(message) values('" + tb_Notification.Text+ "')";
String mycon = "Data Source=DESKTOP-79IQ2D8; Initial Catalog=ForexMedia; Integrated Security=true";
SqlConnection con = new SqlConnection(mycon);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
Label3.Text = "Notification Sent";
tb_Notification.Text = "";
}
答案 0 :(得分:2)
您直接从控件中读取的输入参数之一肯定有问题。
由于SQL注入攻击威胁,因此无论如何都不建议这样做。
如果您将查询更改为我们的参数(参数查询),希望此问题能够得到解决。
以下是如何使用参数的示例。请注意,我没有在示例中使用您的代码:
SqlCommand objSqlCommand = null;
strSQL = @"INSERT INTO ... (Field1, ...)
VALUES
(@param1, ...)";
objSqlCommand = new SqlCommand(strSQL);
objSqlCommand.Parameters.Clear();
objSqlCommand.Parameters.AddWithValue("@param1", yourControl.Text);
....
....
objSqlCommand.ExecuteNonQuery();
objSqlCommand.Dispose();
您应该通过包含using
块或适当的try/catch
块来进一步改进此代码。
这样,如果您的输入中有任何SQL查询敏感字符,它将被正确处理并解决问题。强烈建议这样做,以免遭受SQL注入攻击。