2014-04-27 3 views
-1

Мне нужно петлю для всех записей в моей таблице, коса здесь не работает должным образом в моем проекте «Аукционная веб-система», я использую веб-службу здесь, чтобы проверить статус продукта Периодически, когда статус открывается и время данных меньше, обновите продукт и установите его статус «закрыто». код здесь работает только для одной строки в то время! Мне нужно проверить все строки одновременно.Мне нужно зацикливаться на всех записях в моей таблице

{ string sql12 = "SELECT item_id FROM items Where status='opened' AND endDate<[email protected] "; 

    SqlCommand cmd12 = new SqlCommand(sql12, con); 
    con.Open(); 
    cmd12.Parameters.AddWithValue("@endate", DateTime.Now); 
    query = Convert.ToInt32(cmd12.ExecuteScalar()); 

    string sql123 = "UPDATE items SET status ='closed' WHERE item_id [email protected]_ID"; 
    SqlCommand cmd21 = new SqlCommand(sql123, con); 
    cmd21.Parameters.AddWithValue("@Item_ID", query); 
    cmd21.ExecuteNonQuery(); 
    con.Close(); 
    CalculateWinningPrice(query); 

    } 
    public void CalculateWinningPrice(Int32 query) 
    { 

    string sql1 = "SELECT MAX(Bid_price) AS Expr1 FROM Bid WHERE (item_id = @Item_ID)"; 
    SqlCommand cmd1 = new SqlCommand(sql1, con); 
    con.Open(); 
    cmd1.Parameters.AddWithValue("@Item_ID", query); 
    Int32 max = Convert.ToInt32(cmd1.ExecuteScalar()); 

    SqlCommand cmd3 = new SqlCommand("SELECT user_id FROM Bid WHERE(Bid_price =(SELECT MAX(Bid_price) AS Expr1 FROM Bid AS BID_1 WHERE(item_id = @Item_ID)))", con); 
    cmd3.Parameters.AddWithValue("@Item_ID", query); 
    Int32 winner = Convert.ToInt32(cmd3.ExecuteScalar()); 

    SqlCommand cmd4 = new SqlCommand("SELECT name FROM items WHERE ([email protected]_ID)",con); 
    cmd4.Parameters.AddWithValue("Item_ID", query); 
    string product_name = Convert.ToString(cmd4.ExecuteScalar()); 

    GeneratePDF.create_pdf(product_name, Convert.ToDecimal(max).ToString("c"), DateTime.Now.ToString()); 

    SqlCommand cmd = new SqlCommand("INSERT INTO Winners VALUES(@item_id, @user_id,@win_price,@win_date)"); 
    cmd.CommandType = CommandType.Text; 
    cmd.Parameters.AddWithValue("@item_id", query); 
    cmd.Parameters.AddWithValue("@user_id", winner); 
    cmd.Parameters.AddWithValue("@win_price", max); 
    cmd.Parameters.AddWithValue("@win_date", DateTime.Now); 
    cmd.Connection = con; 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
    } 

ответ

0

Получить результаты в DataReader MSFT DOCU затем оберните остальную часть кода в

while(reader.Read()) 
{ 
    REST OF CODE 
} 

Этот вопрос может также помочь вам. Reader Question

0

вы можете непосредственно обновить таблицу этим запросом

UPDATE пунктов SET статус = 'закрыто' WHERE item_id в (SELECT ITEM_ID FROM пунктов, где статус = 'открытых' И ENDDATE < = @ endate)