我正在創建一個考勤系統並使用網格視圖來插入數據。網格上可能有很多行。所有的事情都進展順利,數據也進入了良好的狀態。但我正在使用for
循環來檢查每一行。當行數增加時,這會使性能變得非常慢。隨着行數的增加,往返程度也在增加。在不使用'for'循環的情況下在gridView中插入多行
任何人都可以提供更好的解決方案嗎?
我已經根據你的所有修改了我的代碼.....但是現在出現了一個問題,它只是多次插入網格的最後一行......除了這個代碼是好的。
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");
移動循環之前進行選擇,使循環後循環和更新表內表的變化。在循環的一次迭代中選擇2次並插入數據不是個好主意。 – Reniuz
選擇語句是必需的,因爲它將獲取最後一行ID,並使用常規exp遞增1。 – Aaraadhana
我有修改我的代碼根據你.....但現在出現了一個問題,它只是多次插入網格的最後一行......除了這個代碼是好的。 – Aaraadhana