我的问题是我尝试了所有类型的解决方案,但它没有更新我的表这里是我的代码背后的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;
}
}
答案 0 :(得分:0)
很难说出这里有什么问题,但我会努力改进你的代码。
也许它也解决了这个问题。
使用逐字字符串文字,使您的SQL查询更好阅读
使用using
语句确保所有内容都正确处理
不要使用字符串连接来构建SQL查询,而是SqlParameter
,毫无例外。这会阻止您进行SQL注入和其他问题。
不使用AddWithvalue
,Add
使用正确的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
。