私は出席システムを作成し、グリッドビューを使用してデータを挿入しています。グリッドには多くの行があります。すべてのことが順調で、データもうまくいっています。しかし、私はfor
ループを使って各行をチェックしています。これにより、行数が増えるとパフォーマンスがかなり低下します。また、増加する行数でラウンドトリップが増加します。'for'ループを使用せずにグリッドビューに複数の行を挿入します。
誰でももっと良い解決策を提供できますか?
私はすべてのコードを変更しています.....しかし、今ではグリッドの最後の行を複数回挿入するだけで問題が発生しています......このコード以外は問題ありません。
MySqlDataAdapter myworkdatta = myworkdatta = new MySqlDataAdapter("SELECT CID,EID,TID,ATTENDENCE FROM EMPLOYEEATT ORDER BY AID DESC LIMIT 1", conn);
DataSet myworkdsatt = new DataSet();
myworkdatta.Fill(myworkdsatt, "EMPLOYEEATT");
int i;
for (i = 0; i < emplist_gv.Rows.Count; i++)
{
string tid = emplist_gv.Rows[i].Cells[6].Value.ToString();
string eid = emplist_gv.Rows[i].Cells[0].Value.ToString();
string atid = emplist_gv.Rows[i].Cells[7].Value.ToString();
MySqlCommand cmdwk = new MySqlCommand("INSERT INTO EMPLOYEEATT (CID,EID,TID,ATTENDENCE) VALUES (@cid,@eid,@tid,@attendence)", conn);
MySqlParameter spcidatt = new MySqlParameter("@cid", calid);
MySqlParameter speid = new MySqlParameter("@eid", eid);
MySqlParameter sptid = new MySqlParameter("@tid", tid);
MySqlParameter spattendence = new MySqlParameter("@attendence", atid);
cmdwk.Parameters.Add(spcidatt);
cmdwk.Parameters.Add(speid);
cmdwk.Parameters.Add(sptid);
cmdwk.Parameters.Add(spattendence);
myworkdatta.InsertCommand = cmdwk;
DataRow drowk = myworkdsatt.Tables["EMPLOYEEATT"].NewRow();
drowk["CID"] = calid;
drowk["EID"] = eid;
drowk["TID"] = tid;
drowk["ATTENDENCE"] = atid;
myworkdsatt.Tables["EMPLOYEEATT"].Rows.Add(drowk);
}
myworkdatta.Update(myworkdsatt, "EMPLOYEEATT");
移動は、ループの後にループし、更新テーブル内のテーブルの変更を行い、ループの前に選択します。ループの1回の反復中に2回選択してデータを挿入するのは良い考えではありません。 – Reniuz
Select Statementは、最後の行IDをフェッチし、通常のexpで1だけインクリメントするために必要です。 – Aaraadhana
私は自分のコードをu ...に合わせて変更しましたが、今は問題が発生しているのは、グリッドの最後の行を複数回挿入しています......これ以外にコードは問題ありません。 – Aaraadhana