Member 13560055 Ответов: 1

Asp .NET update database in C#


Я не могу обновить данные в своей базе данных и не узнаю свою проблему никто не может ее решить?

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DataSaving
{
    public partial class updateDelete : System.Web.UI.Page
    {
        DbConnector db = new DbConnector();
        protected void Page_Load(object sender, EventArgs e)
        {

            loadGrid();
        }
        protected void loadGrid()
        {
            String query = @"SELECT [ID]
                                      ,[Name]
                                      ,[Phone]
                                      ,[Address]
                                      ,[Email]
                                      ,[Birthday]
                                  FROM [dbo].[Info]";
            GridView1.DataSource = db.GetDataTable(query);
            GridView1.DataBind();
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            loadGrid();
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            loadGrid();
        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            loadGrid();
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Label lbl = (Label)GridView1.Rows[e.RowIndex].FindControl("Label1");
            
            String query = @"DELETE 
                                  FROM [dbo].[Info] 
                                  WHERE ID='"+lbl.Text+"'";
            if (db.ExecuteQuery(query) == 1)
            {
                Response.Write("alert('save successful');");
                loadGrid();
            }
            else
            {
                Response.Write("alert('save fail');");
            }
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            
            Label lblID = (Label)GridView1.Rows[e.RowIndex].FindControl("Label1");

            TextBox txtForID = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1");

            TextBox txtForName = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2");

            TextBox txtForPhone = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox3");

            TextBox txtForAddress = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox4");

            TextBox txtForEmail = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox5");

            TextBox txtForBirthday = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox6");

            String query = @"UPDATE [dbo].[Info]
   SET [Name] = '" + txtForName.Text + "' ,[Phone] = '" + txtForPhone.Text + "' ,[Address] = '" + txtForAddress.Text + "',[Email] = '" + txtForEmail.Text + "',[Birthday] = '" + txtForBirthday.Text + "' WHERE ID = '"+ txtForID + "'";

            

            if (db.ExecuteQuery(query) == 1)
            {
                loadGrid();
            }
            else
            {
                Response.Write("alert('fail');");
            }
          
        }

        
    }
}

an0ther1

Не объединяйте строки при вставке или обновлении данных, вы оставляете себя открытым для атак SQL-инъекций, вместо этого используйте параметры.
Следующая статья проекта кода поможет вам понять, что такое SQL-инъекция и как ее избежать; Ноу-хау SQL-инъекций[^]

Во-вторых, используйте свой отладчик. Ваша проблема может быть связана с разрешениями на уровне SQL DB/неправильным форматом значений (наиболее вероятная причина)/нарушениями ограничений или многими другими ошибками.
Ваш отладчик позволит вам увидеть, в чем заключается ошибка, и, скорее всего, укажет вам на решение.
Вам помогут следующие ссылки на код проекта;
10+ мощных трюков отладки с помощью Visual Studio[^]
Расширенная отладка в Visual Studio[^]

В - третьих, обработка исключений-это не то, что нужно игнорировать, вы должны обернуть весь код в блоки try/catch/finally, чтобы обеспечить соответствующую обработку ошибок-обработка ошибок является частью хорошего кодирования
Вам помогут следующие ссылки;
Обработка исключений в C# и ASP .Net[^]

Пройдя через них не стесняйтесь улучшить свой вопрос если у вас есть проблема которая не решена

с уважением

Karthik_Mahalingam

какое сообщение об ошибке вы получаете?

Laxmidhar tatwa technologies

сэр, есть некоторые многие функции . пожалуйста, дайте точку взлома в коде позади
для проблемной функции и передачи точки ошибки

ZurdoDev

Почему вы разместили весь этот код? Ты ведь знаешь, что большая часть этого не имеет отношения к твоей проблеме, верно?

1 Ответов

Рейтинг:
1

F-ES Sitecore

Посмотрите на запрос, чтобы убедиться, что он действителен, и посмотрите на любые сообщения об исключениях. Одна проблема, которую я вижу, заключается в том, что

"' WHERE ID = '"+ txtForID + "'";


должно быть

"' WHERE ID = '"+ txtForID.Text + "'";


Как уже предлагалось, вы должны использовать парметрированные запросы, и могут возникнуть другие проблемы, кроме описанной выше. Просто сбрасывая свой код, не давая сообщений об ошибках или строк ошибок и говоря "не работает", вы не даете никому достаточно информации, чтобы помочь вам.