Mise à jour de table de base de données basé sur des valeurs textbox

Je suis en train de mettre à jour la base de données de tableau sur la base de la boîte à textes de valeurs.Mais je ne suis pas en mesure d'obtenir de nouvelles valeurs modifiées dans la base de données.

Voici mon code qui affiche les informations dans les zones de texte provenant de la base de données

protected void Info()
{
    string sID = Request.QueryString["ID"];
    string sSql = "select * from [fn_Items]('"+sID+"')";
    DataTable tbl1 = new DataTable();
    string sEr = myClass.FillupTable(sSql, ref tbl1);
    if (tbl1.Rows.Count > 0)
    {
        DataRow rd = tbl1.Rows[0];
        txtName.Text = rd["Name"].ToString();
        txtCategory.Text = rd["Category"].ToString();
        DateTime mStart;
        DateTime mFinish;
        Boolean b = false;

        b = DateTime.TryParse(rd["start"].ToString(), out mStart);
        b = DateTime.TryParse(rd["end"].ToString(), out mFinish);
        txtStart.Text = mStart.ToString("dd-MMM-yyyy");
        txtend.Text = mFinish.ToString("dd-MMM-yyyy");
        txtDescription.Text = rd["Description"].ToString();

    }
}

Maintenant, lorsque l'utilisateur modifie la zone de texte données et clique sur enregistrer, les données devraient changer dans la base de données. Voici mon click_event:

protected void btnSave_Click(object sender, EventArgs e)
{
    using (SqlConnection sqlConn = new 
        SqlConnection("Data Source=MSSQLSERVER2008;Initial Catalog=Items_2;Persist Security Info=True;User ID=sa;Password=password"))
    {

        string query = "UPDATE tbl_Items SET Name = @Name,Category=@Category,start = @start, end = @End,Description = @Description where ID = @ID ";
        SqlCommand cmd = new SqlCommand(query, sqlConn);
        cmd.Parameters.AddWithValue("@ID",txtID.Text);
        cmd.Parameters.AddWithValue("@Name", txtName.Text);
        cmd.Parameters.AddWithValue("@Category", Category.Text);
        cmd.Parameters.AddWithValue("@start", txtStart.Text);
        cmd.Parameters.AddWithValue("@end",txtend.Text);
        cmd.Parameters.AddWithValue("@Description", txtDescription.Text);
        cmd.Connection.Open();
        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw new Exception("Error " + ex.Message);
        }

    }

Ici pendant la mise à jour, dans les zones de texte, j'obtiens les valeurs présentes dans la base de données où j'ai besoin d'obtenir les valeurs modifiées. Comment puis-je obtenir les valeurs modifiées à la place?

  • Lors du débogage, voyez-vous les valeurs dans l'événement click? Êtes-vous sûr qu'ils sont étiquetés correctement?
  • Lors de l'Iam de débogage, j'obtiens les valeurs précédentes qui sont d'Info() . Je ne reçois pas les valeurs qui sont modifiés.
  • Sur une note de côté, vous devez valider vos saisies de texte. Votre code est vulnérable aux injections SQL. Par exemple, disons que dans txtID.Le texte, j'ai d'entrée de la valeur 12345' drop table tbl_items , je serais en mesure de déposer votre table.
  • Si l'événement click ne pas afficher les valeurs en cours, puis en exécutant le script ne sera pas de mise à jour de la db avec ces valeurs. Vous devez les fixer en premier.
  • Je vais prendre une balançoire. 🙂 Vous avez besoin !IsPostBack au Chargement de la Page événement comme celui - Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Info(); }}
  • Oui c'est ce que mon problème est, je ne peux pas comprendre pourquoi l'événement click de ne pas afficher les valeurs actuelles
  • Veuillez voir mon explication dans ma réponse.
  • Merci @Win oui j'ai oublié d'ajouter Ispostback dans ma page de chargement...Merci beaucoup!!!!!

InformationsquelleAutor Chow.Net | 2013-01-22