我在ASP.NET的項目。所以我有一個頁面,我正在生成隨機優惠券密鑰。所以用戶輸入數量並生成。插入查詢在for循環中工作不正常
所以我做什麼,我把一個for循環,根據數量和裏面的for循環我創建了一個隨機密鑰並搜索數據庫的關鍵(關鍵是唯一的),然後在數據庫中插入數據。
代碼:
for (int i = 0; i < quantity; i++)
{
do
{
couponKey = generateKey();
} while (!SearchEpinKey(couponKey));
conn = new SqlConnection(connString);
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
string query = "INSERT INTO CouponStock (coupon_key, status, created_on)";
query += "VALUES('" + couponKey + "','Unused', GETDATE())";
cmd.CommandText = query;
cmd.ExecuteNonQuery();
}
conn.Close();
}
在循環中,流量是這樣的:
-Genrate random key
-Search if random key exists or not in db
-If found similar then again generate random key
-Insert the data in DB
所以,當我運行這個頁面,小批量像10或15,其工作的罰款。但是當我走50或100時,它會插入隨機數的行,比如24時,48時。然後,應用程序會掛起。我在想,Sql服務器在短時間間隔內會遇到很多時間。任何關於如何處理這些問題的指導都會有所幫助。
這是什麼邏輯被用來生成隨機密鑰?您可能能夠將整個過程移至存儲過程。這會更簡單,更快速和準確。 –
@SeanLange感謝您的想法,我會把所有的數據集合,然後執行查詢。我不知道表值參數,但我會在互聯網上搜索。 – sumit
@SeanLange如果我使用內部程序相同的邏輯,將它正常工作? – sumit