0
我將有多個進程同時運行,所以我在這裏試圖做的是獲取1000行,然後更新我選擇的行..下面是我的選擇和更新功能,請注意,我所說的更新功能關閉在選擇功能C#+ mysql我想選擇1000行然後更新那些選定的行
public List<string> Select()
{
string set;
string query = "SELECT * FROM master WHERE attempted='0' LIMIT 1000";
List<string> list = new List<string>();
if (this.OpenConnection() == true)
{
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader dataReader = cmd.ExecuteReader();
while (list.Count() < 1000)
{
dataReader.Read();
string email = dataReader["email"].ToString();
var m = dataReader["attempted"];
if (m.ToString() == "0")
{
list.Add(email);
}
}
dataReader.Close();
this.CloseConnection();
Update();
return list;
}
else
{
return list;
}
}
public void Update()
{
if (this.OpenConnection() == true)
{
string query = "UPDATE master SET attempted='1' WHERE (SELECT * FROM master WHERE attempted='0' LIMIT 1000)";
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.CommandText = query;
cmd.ExecuteNonQuery();
this.CloseConnection();
}
}
例外我得到它的操作數必須包含1列(S)連接後的權利..
上午什麼我做錯了?
這可以放在一本書中作爲一個例子「不要這樣做」... –
Andres使用參數化查詢啓動器也爲什麼你不傳遞參數到更新方法這樣你可以更改你的更新主語句更新主設置嘗試='1'其中@EmailAddress =電子郵件和嘗試= 0'類似的東西..你不需要一個SUB在這個特定的UPDATE語句選擇 – MethodMan
當你使用更新查詢你通常將它與你想要改變的價值;然後創建一個子查詢,查找將要更改的所需條件。你的特定方法違背了結構。 – Greg