Prateek gsharma Ответов: 1

Как обновить datagridview с помощью кнопки Обновить


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

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Configuration;

private void Form2_Load(object sender, EventArgs e)
{
  da = new OleDbDataAdapter("select * from Spldetails",con1);
  ds = new System.Data.DataSet();
  da.Fill(ds, "spldetails");
  dataGridView1.DataSource = ds.Tables[0];
}

private void button5_Click(object sender, EventArgs e)
        {
            using (OleDbConnection con1 = new OleDbConnection(con))
            {
                
 
                    con1.Open();
                    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                    {
                        cmd = new OleDbCommand();
                        cmd.Connection = con1;
                        string query2 = "Update Spldetails set Status = @sts,Comment =@cmnt,Approvedhrs =@aphr,Reviewer ='" + Environment.UserName + "',Revieweddate = Now where ID =@id ";
                        cmd.Parameters.AddWithValue("@id", dataGridView1.Rows[i].Cells[0].Value);
                        cmd.Parameters.AddWithValue("@sts", dataGridView1.Rows[i].Cells[10].Value);
                        cmd.Parameters.AddWithValue("@cmnt", dataGridView1.Rows[i].Cells[11].Value);
                        cmd.Parameters.AddWithValue("@aphr", dataGridView1.Rows[i].Cells[13].Value);
                        //cmd.Parameters.AddWithValue("@AfterMC", dataGridView1.Rows[i].Cells[15].Value);

                      
                        cmd.CommandText = query2;
                        cmd.ExecuteNonQuery();

                    }

Richard Deeming

string query2 = "Update Spldetails set Status = @sts,Comment =@cmnt,Approvedhrs =@aphr,Reviewer ='" + Environment.UserName + "',Revieweddate = Now where ID =@id ";


Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

Вы уже знаете, как использовать параметры, так почему же вы решили не использовать параметр для рецензента?!

1 Ответов

Рейтинг:
1

APE-Germany

Я думаю, что проблема заключается в следующем: вы используете свойство DataSource, и когда вы используете источник данных, вы не можете перезаписать ячейки DataGridView. Я думаю, что вы должны обновить источник данных, и проблема будет решена..


Prateek gsharma

хотя это и не работает.