I'm trying to batch record using windows form. But When I click button to save, it works very slowly especially in this code block. Do you have a solution?
int i = 0;
List<int> ChkedRow = new List<int>();
if (dataGridView1.Rows.Count > 0)
for (i = 0; i <= dataGridView1.RowCount - 1; i++)
{
if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["oid"].Value) == true)
{
ChkedRow.Add(i);
}
}
if (ChkedRow.Count == 0)
{
MessageBox.Show("Geziye katılacak öğrenci seçiminde bulunmadınız!");
return;
}
What I have tried:
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
List<int> ChkedRow = new List<int>();
if (dataGridView1.Rows.Count > 0)
for (i = 0; i <= dataGridView1.RowCount - 1; i++)
{
if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["oid"].Value) == true)
{
ChkedRow.Add(i);
}
}
if (ChkedRow.Count == 0)
{
MessageBox.Show("Geziye katılacak öğrenci seçiminde bulunmadınız!");
return;
}
progressBar1.Visible = true;
label5.Visible = true;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.RunWorkerAsync();
foreach (int j in ChkedRow)
{
try
{
var val1 = dataGridView1.Rows[j].Cells["tcno"].Value;
var val2 = dataGridView1.Rows[j].Cells["ono"].Value;
var val3 = dataGridView1.Rows[j].Cells["isim"].Value;
var val4 = dataGridView1.Rows[j].Cells["soyisim"].Value;
var val5 = dataGridView1.Rows[j].Cells["cinsiyet"].Value;
var val6 = dataGridView1.Rows[j].Cells["dtarihi"].Value;
var val7 = dataGridView1.Rows[j].Cells["sinifi"].Value;
var val8 = dataGridView1.Rows[j].Cells["unvan"].Value;
var val9 = dataGridView1.Rows[j].Cells["tel"].Value;
var val10 = dataGridView1.Rows[j].Cells["vtel"].Value;
var val11 = dataGridView1.Rows[j].Cells["kbaskani"].Value;
using (var conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = gezievrak2541.accdb; Jet OLEDB:Database Password = Fatih2541; Mode = ReadWrite"))
{
conn.Open();
using (var cmd = new OleDbCommand("select * from gezilistemiz25 where adi = '" + val3 + "' and soyadi= '" + val4 + "' ", conn))
{
using (OleDbDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
while (dr.Read())
{
MessageBox.Show(" '" + val3 + " " + val4 + "' isimli öğrenciler veritabanında kayıtlıdır. Mükerrer kayıt yapılamaz. Lütfen kontrol ediniz.");
}
}
else
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
var cmdText = @"INSERT INTO gezilistemiz25 (tcno,ono,adi,soyadi,cinsiyet,dtarihi,sinifi,unvani,tel,vtel,kbaskani) VALUES(@tcno,@ono,@adi,@soyadi,@cinsiyet,@dtarihi,@sinifi,@unvani,@tel,@vtel,@kbaskani)";
var komut = new OleDbCommand(cmdText, conn);
komut.Parameters.AddWithValue("@tcno", val1);
komut.Parameters.AddWithValue("@ono", val2);
komut.Parameters.AddWithValue("@isim", val3);
komut.Parameters.AddWithValue("@soyisim", val4);
komut.Parameters.AddWithValue("@sinifi", val5);
komut.Parameters.AddWithValue("@cinsiyet", val6);
komut.Parameters.AddWithValue("@unvan", val7);
komut.Parameters.AddWithValue("@dtarihi", val8);
komut.Parameters.AddWithValue("@tel", val9);
komut.Parameters.AddWithValue("@vtel", val10);
komut.Parameters.AddWithValue("@kbaskani", val11);
komut.ExecuteNonQuery();
komut.Dispose();
komut.Parameters.Clear();
conn.Close();
conn.Dispose();
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
MessageBox.Show("Seçtiğiniz öğrenciler gezi listesine eklendi.");
}