双数据插入数据库asp.net c#

时间:2016-11-07 14:02:55

标签: c# asp.net

我正在做航空预订系统。当我将所有数据插入数据库时​​,它会插入双数据。为什么会这样? 这是我的代码:

public partial class CompleteOrder : System.Web.UI.Page
{
    string SeatNum;
protected void Page_Load(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-28L03QE\SQL2014;Initial Catalog=Airline;Integrated Security=True;Pooling=False");
    con.Open();

    Random rnd = new Random();
    int ordernum = rnd.Next(3, 10000);
    string Name = Request.QueryString["name"];
    string IC = Request.QueryString["ic"];
    string Contact = Request.QueryString["contact"];
    string SeatType = (string) (Session["seats"]);
    SeatNum = Request.QueryString["seatnum"];

    Label7.Text = Convert.ToString(ordernum);
    Label4.Text = Name;
    Label8.Text = IC;
    Label10.Text = Contact;
    Label14.Text = SeatType;
    Label16.Text = SeatNum;



    SqlCommand cmd = new SqlCommand("INSERT INTO [Table](OrderNum,Name,IdentificationNumber, ContactNumber, SeatType, SeatNumber)VALUES('" + Label7.Text + "','" + Label4.Text + "','" + Label8.Text + "','" + Label10.Text + "', '" + Label14.Text + "', '" + Label16.Text + "')", con);
    cmd.ExecuteNonQuery();
    con.Close();
}

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
    Response.Redirect("~/Main.aspx?seatnum="+SeatNum);
}
}

请帮帮我,谢谢。

2 个答案:

答案 0 :(得分:1)

可能是在点击图片按钮之后。因为第一个数据是在页面加载时插入的,第二个是在回发后由于图像按钮单击而插入的。您可以通过将插入逻辑保留在

中来避免这种情况
if(!Page.IsPostBack)
{
    // insert code
}

我仍然很困惑你为什么要在页面加载上插入数据。有人可能会过多地填满你的数据库来惹恼你。

答案 1 :(得分:0)

你有两个不好的做法。

首先,你应该使用sql参数而不是简单地连接它们;避免SQL注入。阅读permanently redirect

其次,不要在HTTP GET(Page_Load)中插入。您应该在HTTP POST中执行此操作,然后再次重定向到HTTP GET(PRG模式)。

双重插入的原因可能是因为您在同一页面上打了两次(在这种情况下为Page_Load);如果您应用PRG模式,您会注意到的事情。

请参阅here