Eliminar datos (método de eliminación verdadero y falso) en DataGridView y actualizar a la base de datos sql

Elimine los datos en el control DataGridView en el extremo winform del equipo host y actualícelo en la base de datos

Primero introduzca los dos métodos de borrado, borrado verdadero y borrado falso, primero introduzca borrado falso, seguido de borrado verdadero borrado
verdadero: el
borrado verdadero se refiere al borrado real de los datos en la base de datos, no se mostrará de nuevo, y luego deberá Los datos deben agregarse nuevamente. La instrucción de eliminación se usa para
una eliminación falsa : en
realidad no está eliminando los datos en la base de datos, sino simplemente configurando un bit de indicador IsDeleted en la columna de datos que desea eliminar, suponiendo que el bit de indicador sea 0 por defecto, piense Al eliminar una fila de datos, establezca el indicador en 1 y use la instrucción de actualización
para que los datos sigan en la base de datos, pero ya no se muestren en el DataGridView del equipo host. El proceso específico es el siguiente:

  • Esta es la información de datos
    en la base de datos. Al diseñar la tabla, agregue una columna de IsDeleted de tipo int y configúrela en 0 de manera predeterminada.
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  • Cuando la computadora host carga la información en el control DataGridView, la instrucción sql utilizada es la siguiente:
    preste atención para agregar una oración donde s.IsDeleted = 0 Esto mostrará que el valor predeterminado IsDeleted = 0 es todas las filas de datos
    . Además de la ejecución de sentencias de consulta en SQL, los resultados de consulta mostrados
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  • Esta es la interfaz de PC para visualización de información
    en la primera columna y las dos últimas columnas y agregar la columna Enlace de casilla de verificación en DataGridView en la forma de mostrar una referencia específica en la entrada del blog
    https://blog.csdn.net/qq_39217004/article/details/ 105364814

Inserte la descripción de la imagen aquí

A continuación se describe cómo implementar en el código, los pasos e ideas de eliminación falsa

  1. Establezca el evento de registro CellContentClick de la vista de cuadrícula de datos de control y haga clic en el contenido de la celda para activar el evento
  2. Agregar código en el evento CellContentClick
  3. Primero, obtenga el índice de fila y columna de la celda en la que se hace clic actualmente (las filas y columnas para determinar los datos seleccionados)
  4. Si hace clic en la tecla Eliminar en la última columna de la enésima fila, se ejecuta el método
  5. Primero obtenga los datos de la fila haciendo clic con el mouse y use datagridview para pasar a datarow
  6. Escriba la instrucción sql para establecer el bit de marca de los datos de fila seleccionados en 1 en la base de datos
  7. Actualizar en la vista de cuadrícula de datos, eliminar la fila de datos que acaba de seleccionar

Seleccione un objeto para eliminar, haga clic en Eliminar y luego haga clic en Aceptar, indica que la eliminación se realizó correctamente y la información en la interfaz también desaparece.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
Abra la base de datos para ver los resultados,
haga clic en ejecutar, puede ver que el indicador isDeleted de la fila seleccionada en la interfaz ha cambiado
9ibG9nLmNzZG4ubmV0L3FxXzM5MjE3MDA0, size_16, color_FFFFFF, t_70)
Inicie la página del programa nuevamente para 1 y encontrará que la información eliminada "Wang Feng" ya no se muestra en la página
Inserte la descripción de la imagen aquí

private void dgvStudents_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex != -1)  //鼠标点击的位置在  列标题位置下的数据,才触发
    {
        //1 获取我当前点击的单元格的行列数索引
        //2 判断是否选择的是link列,并且判断是 删除还是修改
        DataGridViewCell cell = dgvStudents.Rows[e.RowIndex].Cells[e.ColumnIndex];//1      
        if (cell is DataGridViewLinkCell && cell.FormattedValue.ToString() == "删除")
        {
            //删除操作
            DialogResult drResult = MessageBox.Show("你确定要删除该学生的信息吗?", "删除学生信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (drResult == DialogResult.Yes)
            {
                //获取行数据
                //dgvStudents.Rows[e.RowIndex]是数据表中鼠标点击的行索引   DataRow表示表中的一行数据
                //(xxx).Row才获取到了所选中的行列索引所绑定的对象
                //DataGridViewRow转换为DataRow
                DataRow dr = (dgvStudents.Rows[e.RowIndex].DataBoundItem as DataRowView).Row;
                int stuId = int.Parse(dr["stuId"].ToString());//将stuId字符串型转化为整型
                                                              //假删除 IsDeleted
                string sqlDel0 = "update StudentInfo set IsDeleted=1 where StuId=@stuId";
                SqlParameter para = new SqlParameter("@StuId", stuId);
                int count = SqlHelper.ExecuteNonQuery(sqlDel0, para);
                if (count > 0)
                {
                    MessageBox.Show("该学生信息删除成功", "删除学生信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //DataGridView中的数据并没有刷新,需要手动刷新一下
                    DataTable dtStudents = (DataTable)dgvStudents.DataSource;//获取到数据源
                    dtStudents.Rows.Remove(dr);//将获取到的行列索引所绑定的对象移出
                    dgvStudents.DataSource = dtStudents;//重新指定数据源
                }
                else
                {
                    MessageBox.Show("该学生信息删除失败", "删除学生信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }         
          }
        }
    }

Lo siguiente introduce la eliminación verdadera :
en base a la eliminación falsa, solo necesita cambiar la instrucción sql ligeramente. Cambio
1:
string sqlDel0 = "delete StudentInfo where StuId = @ stuId";
Cambio 2: Al
cargar datagridview, cambie la declaración sql a la
Inserte la descripción de la imagen aquí
siguiente vista Resultado de la depuración:
seleccione un dato eliminado en el control, haga clic en: eliminar, la información en la interfaz desaparece.
Se encontró en sql que la información de "Wang Feng" en la tabla de estudiantes también se eliminó por completo, logrando el efecto deseado
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

En este punto, la función se ha completado

Publicado 18 artículos originales · elogiado 0 · visitas 233

Supongo que te gusta

Origin blog.csdn.net/qq_39217004/article/details/105366769
Recomendado
Clasificación