這裏是我的代碼:我應該如何在SQL查詢中實現IF語句?
string cmdstr = "UPDATE itemsordered i " +
"INNER JOIN"+
"( SELECT itemsOrdered_quantity, itemsOrdered_ID, "+
"IF itemsOrdered_quantity = '"+quantityTxtBox.Text+"' SELECT 'EQUAL' "+
"IF itemsOrdered_quantity < '" + quantityTxtBox.Text + "' SELECT 'LESS' " +
"IF itemsOrdered_quantity > '" + quantityTxtBox.Text + "' SELECT 'MORE' " +
"END AS r "+
"FROM itemsordered "+
") res ON i.itemsOrdered_ID = res.itemsOrdered_ID "+
"INNER JOIN stocksdb s ON s.stock_ID = i.stock_ID " +
"SET s.stock_quantity = (s.stock_quantity + i.itemsOrdered_quantity), " +
"s.stock_dateUpdated = '" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "', " +
"i.itemsOrdered_status = 'RECEIVED', " +
"i.itemsOrdered_dateReceived = '" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "'" +
"WHERE i.itemsOrdered_ID = '" + idTxtBox.Text + "' AND res.r = 'EQUAL'";
cmd = new MySqlCommand(cmdstr, db.mycon);
cmd.ExecuteNonQuery();
MessageBox.Show("ITEM RESTOCKED!");
我真正想要做的是,如果itemsOrdered_quantity
等於在quantityTxtBox
的值,那麼它會通過增加對itemsOrdered_quantity
量的電流量更新s.stock_quantity
。
我還想做其他的IF子句。但我想先解決這個困境。
它在cmd.ExecuteNonQuery
上返回一個錯誤,並指向我的SQL字符串'near'我的IF語句。
請使用參數而不是連續的將串連在一起。目前你的代碼容易受到[SQL注入](http://www.sommarskog.se/dynamic_sql.html#SQL_injection)的影響,所以用戶可以幫助你自己處理數據,刪除或更新他們想要的任何字段或行等。它的性能也更好。 – Bridge
感謝您的提示!但我已經處理了按鍵事件,只允許TextBox上的數字 –
由於性能方面的原因,更好一些,就好像查詢文本發生了變化,然後創建了一個新的查詢計劃 - 此時您每次都在更改查詢文本;如果您使用參數,則不會在每次執行時更改文本,因此可以重複使用計劃。如果您想了解更多信息,請閱讀[this](http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html)。 – Bridge