C# SQLite 에서 다중으로 행을 선택한 경우 해당 행을 모두 삭제하는 코드이다.
C# SQLite에서 다량의 데이터를 삭제하는 테스트를 해봤더니 새벽에 테스트한 로직은 시간이 너무 많이 걸린다.
그래서 로직은 새로 구현하여 변경했고, 테스트 결과는 매우 만족스럽게 빠르게 처리된다.
foreach (DataGridViewRow item in this.dataGridView1.SelectedRows) 이 구문은 다중으로 행을 선택하면 로직이 가장 나중에 선택된 행부터 선택하여 삭제를 한다는 걸 확인했다.
연결형 방식으로 처리하며 코드는 아래 포멧을 준수하여 필요한 부분만 수정하면, 구글링이나 네이버 사이트 검색하지 않아도 될 것이다.
if (!this.dataGridView1.Rows[this.rowIndex].IsNewRow) 는 dataGridView 에서 신규행 추가를 위한 행이 아니면을 의미하므로 dataGridView 가 아닌 경우에는 코드를 제외하면 된다.
Update 처리도 동일한 방식으로 코드를 구현하면 된다.
private void btnDelete_Click(object sender, EventArgs e)
{
int delete_cnt = 0; // 삭제건수 카운트
if (!this.dataGridView1.Rows[this.rowIndex].IsNewRow)
{
using(var Conn = new SQLiteConnection(ConnectionString))
{
Conn.Open();
using (var cmd = new SQLiteCommand(Conn))
{
using (var transaction = Conn.BeginTransaction())
{
try
{
foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
{
cmd.CommandText = string.Format("DELETE FROM items Where uid={0}", item.Cells[2].Value);
cmd.ExecuteNonQuery();
delete_cnt++;
}
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
MessageBox.Show(ex.Message);
throw;
}
}
}
Conn.Close();
dgv = GetSqliteItems();
MessageBox.Show(delete_cnt.ToString() + "건 삭제되었습니다...");
}
}
}
'C# > C# SQL' 카테고리의 다른 글
C# dataGridView CSV 파일로 저장 (0) | 2016.01.29 |
---|---|
C# MySqlDataReader Format (0) | 2016.01.28 |
C# SQLite dataGridView1 에 Select (0) | 2016.01.14 |
C# SQLite dataGridView1 행 삭제 (transaction 미반영) (0) | 2016.01.14 |
C# SQLite Data Type 으로의 변환 및 구조 분석 (0) | 2016.01.13 |