ホストコンピューターのwinform側にあるDataGridViewコントロールのデータを削除し、データベースに更新します。
最初に、2つの削除方法、真の削除と偽の削除を紹介し、最初に偽の削除を紹介し、次に真の削除と
真の削除を紹介します。
真の削除とは、データベース内のデータの実際の削除を指し、再度表示されないため、データを再度追加する必要があります。delete ステートメントは、
誤った削除に使用されます。
データベース内のデータを実際に削除するのではなく、削除するデータ列にフラグIsDeletedを設定するだけですデータの行を削除するときは、フラグを1に設定し、データがまだデータベースにあるようにupdateステートメントを使用し
ますが、ホストコンピューターDataGridViewには表示されません。具体的なプロセスは次のとおりです。
- これは、データベース
内のデータ情報です。テーブルを設計するときに、int型のIsDeletedの列を追加し、デフォルトで0に設定します。
- ホストコンピューターがDataGridViewコントロールに情報を読み込むとき、使用されるSQLステートメントは次のとおりです
。s.IsDeleted= 0である文を追加するように注意してください。これは、デフォルトのIsDeleted = 0がすべてのデータ行であることを示します
次の図は、ホストコンピューターのSQLステートメントですSQLでのクエリステートメントの実行と同様に、表示されたクエリ結果
- これは、表示情報をPCインターフェースである
ブログの記事に特定の参照を表示する方法でのDataGridViewにリンクチェックボックス列を追加する最初の列の最後の2つの列と
https://blog.csdn.net/qq_39217004/article/details/ 105364814
以下は、コードでの実装方法、偽の削除の手順とアイデアについて説明しています。
- コントロールdatagridviewのCellContentClick登録イベントを設定し、セルのコンテンツをクリックしてイベントをトリガーします
- CellContentClickイベントにコードを追加する
- まず、現在クリックされているセルの行と列のインデックスを取得します(選択したデータを決定する行と列)
- n行目の最後の列で削除キーをクリックすると、メソッドが実行されます
- 最初にマウスでクリックされた行データを取得し、datagridviewを使用してdatarowに切り替えます
- データベースで選択した行データのフラグビットを1に設定するSQLステートメントを書き込みます
- datagridviewで更新し、選択したdatarowを削除します
削除するオブジェクトを選択し、[削除]をクリックしてから[OK]をクリックすると、削除が成功したことを示すプロンプトが表示され、インターフェイスの情報も消えます。
データベースを開いて結果を表示し、
[実行]をクリックすると、インターフェイスで選択した行のisDeletedフラグが変更されたことがわかります1の
プログラムページをもう一度開始すると、削除された「Wang Feng」情報がページに表示されなくなっていることがわかります。
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);
}
}
}
}
ここにいる本当に削除:
偽に基づいて削除された、わずかにする必要が私たちのSQLステートメントを変更
変更:
文字列= sqlDel0「削除StudentInfo WHERE StuId = @ stuId」;
変更2:
DataGridViewのをロードするときに、SQLステートメントを変更する
ビューの下デバッグ結果:
コントロールで削除されたデータを選択し、クリック:削除すると、インターフェイスの情報が消えます。
SQLで、studentテーブルの「Wang Feng」の情報も完全に削除され、目的の効果が得られたことが判明しました
この時点で、機能は完了しています