C 批量新增資料的問題

2022-03-23 02:00:47 字數 1347 閱讀 6588

最近在考試系統的二期維護中,負責ip的部分。其中涉及到了批量新增ip的問題。

起初,維護的初衷為是了實現ip與考場的繫結。大家知道,維護的過程就是在優化,在一期中已經能夠實現批量新增ip的功能,利用的是迴圈逐條新增ip。但是存在這樣乙個問題,就是在批量新增ip之前,需要驗證ip是否已經存在。其實驗證是非常簡單的,關鍵是驗證ip是否存在和新增ip都巢狀在迴圈中,如果單純在if邏輯語句中呼叫查詢函式,會導致這樣的情況:就是新增多少條記錄(假定這幾條記錄資料庫中都存在),就會彈出多少個對話方塊提示「您新增的ip已經存在!」。這樣不符合實際的要求。而且為了使使用者體驗度提高,要提示出具體哪些ip是已經存在的,以確保使用者能夠準確識別ip新增成功與否。

因為批量新增ip是巢狀在乙個for迴圈中,所以每次只能來一條記錄,我們的目的是先驗證ip是否存在,如果存在則捕獲這些存在的ip,不存在的則新增到資料庫中。所以起初的**是這樣寫的

for (int i = int.parse(txtstart4.text.trim()); i < int.parse(txtend4.text.trim()) + 1; i++)

} //如果要新增的ip存在則提示資訊

else

//否則提示新增失敗

else

} } 但是問題又出現了,就是如果我批量新增的ip中有部分重複,如果最後一條ip資料庫中不存在,那麼介面就會直接跳轉成「新增成功」,而直接略過了檢索重複ip的介面,使用者也不會看到哪些ip已經存在不能新增。舉個例子,假設資料庫中已經存在192.168.24.1——192.168.24.5,但是當我新增192.168.24.1——192.168.24.10的時候,出現的介面就是「新增成功」,而本應該的檢索已經存在的ip值就會直接被跳轉過去,使用者看不到。所以又做了下面的調整。

for (int i = int.parse(txtstart4.text.trim()); i < int.parse(txtend4.text.trim()) + 1; i++)

//如果要新增的ip存在則提示資訊

else

} //如果陣列裡的長度大於0,證明陣列中有重複的ip,則將重複的ip顯示在文字框

if (arr.capacity > 0)

}//返回值為false則證明沒有重複存在的ip,則提示資訊新增成功!

else

解決的方案是巢狀乙個小迴圈在驗證ip的部分,但是小迴圈的初始值等定義需要定義在大迴圈的外部,不然每進行一次大迴圈小迴圈就要重新被寫一遍,把初始值等定義部分放到大迴圈外部,就會避免這種問題。與此同時,在整個迴圈進行結束之後,判斷陣列的長度,如果陣列長度大於0,則證明要新增的ip有部分存在或全部存在,這時候要在介面中顯示出來以提示使用者。相反如果陣列長度等於0,則證明新增的ip沒有重複,則提示新增成功。這樣就解決了批量新增ip已經存在的問題了

Sqlite批量新增資料

今天遇到了往sqlite資料庫裡插入1400多條資料的情況,結果每次都需要一兩分鐘才能完成.搜尋了一下,在這裡找到了解決辦法,所需要的時間直接變成不到2秒 internal static void fastinsertmany dbconnection cnn dbtrans.commit catc...

PHP批量新增資料

連線資料庫 header content type text html charset utf 8 define db host 127.0.0.1 define db user root define db pass root define db name test define db port ...

大批量新增資料

這篇文章主要介紹了php大批量插入資料庫的3種方法和速度對比,3種方法分別使用普通insert語句 insert into語句和事務提交,需要的朋友可以參考下 第一種方法 使用insert into 插入,如下 params array value 50 set time limit 0 echo ...