更新声明2表c#

时间:2015-06-03 12:19:03

标签: c# sql asp.net

我的问题是我尝试了所有类型的解决方案,但它没有更新我的表这里是我的代码背后的button_click更新:

protected void Button2_Click(object sender, EventArgs e)
        {

            string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
            FileUpload1.SaveAs(Server.MapPath("Files/" + fileName));
            SqlConnection cnx = new SqlConnection();
            cnx.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["str"].ConnectionString;

            SqlCommand cmd = new SqlCommand("Update Appel_offre set Titre_ao='" + TextBox4.Text + "',Description_ao='" + TextBox5.Text + "',Cout='" + TextBox6.Text + "',Type='" + DropDownList3.Text + "',Date='" + TextBox8.Text + "',Echeance='" + TextBox9.Text + "',Reference='" + TextBox7.Text + "',Piece_jointe='" + "Files/" + fileName + "',filename='" + fileName + "' where Id_ao = '" + Session["Id_ao"] + "' ", cnx);
            SqlCommand cmd1 = new SqlCommand("Update Lot set Description=@desc,Reference=@ref,Type=@type where Titre = '" + Dropdownlst.SelectedItem.Value + "'",cnx);
            cnx.Open();
            cmd1.Parameters.AddWithValue("@desc", TextBox2.Text );
            cmd1.Parameters.AddWithValue("@ref", TextBox3.Text );
            cmd1.Parameters.AddWithValue("@type", DropDownList2.Text );

            cmd.ExecuteNonQuery();
            cmd1.ExecuteNonQuery();

            cnx.Close();

            if (IsPostBack)
            {
                conff.Visible = true;
            }


        }

1 个答案:

答案 0 :(得分:0)

很难说出这里有什么问题,但我会努力改进你的代码。

也许它也解决了这个问题。

  • 使用逐字字符串文字,使您的SQL查询更好阅读

  • 使用using语句确保所有内容都正确处理

  • 不要使用字符串连接来构建SQL查询,而是SqlParameter,毫无例外。这会阻止您进行SQL注入和其他问题。

  • 不使用AddWithvalueAdd使用正确的SqlDbType,否则数据库会对您的参数类型进行猜测。

  • 传递正确的类型,不要让数据库转换参数,这也会验证无效输入(例如,错误的日期)

代码:

string updateApple = @"Update Appel_offre Set 
                            Titre_ao = @Titre_ao,
                            Description_ao = @Description_ao,
                            Cout           = @Cout,
                            Type           = @Type,
                            Date           = @Date,
                            Echeance       = @Echeance,
                            Reference      = @Reference,
                            Piece_jointe   = @Piece_jointe,
                            filename       = @filename
                        where Id_ao = @Id_ao;";
string updateLot = @"Update Lot Set 
                            Description    = @Description,
                            Reference      = @Cout,
                            Type           = @Type
                     where Titre = @Titre;";
using (var cnx = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["str"].ConnectionString))
using(var cmd_UpdateApple = new SqlCommand(updateApple, cnx))
using (var cmd_UpdateLot = new SqlCommand(updateLot, cnx))
{
    cmd_UpdateApple.Parameters.Add("@Titre_ao", SqlDbType.VarChar).Value = TextBox4.Text;
    cmd_UpdateApple.Parameters.Add("@Description_ao", SqlDbType.VarChar).Value = TextBox5.Text;
    // ...
    cmd_UpdateApple.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Parse(TextBox8.Text);
    // ...

    cnx.Open();
    int updatedAppels = cmd_UpdateApple.ExecuteNonQuery();

    cmd_UpdateLot.Parameters.Add("@Description", SqlDbType.VarChar).Value = TextBox2.Text.Text;
    // ...
    cmd_UpdateLot.Parameters.Add("@Titre", SqlDbType.VarChar).Value = Dropdownlst.SelectedItem.Value;
    int updatedLot = cmd_UpdateApple.ExecuteNonQuery();
}

我已使用DateTime.Parse,如果格式无效,请使用DateTime.TryParse