我有4个用户可以输入的值,它们是必须在列值中(或一部分)的关键字,以及2个用户可以输入的值,它们不应该出现在同一列中。 如果结果正确,则应更新另一列中的字段。
我认为问题在于两个方面。
如何处理空白(搜索和/或忽略)字段。
如何将列应包含的值与列不应包含的值相结合。
我尝试了各种LIKE NOT LIKE组合,但均未达到预期效果。唯一有效的方法是用填充字段将数据填充到Empy字段。听起来不像是一个干净的解决方案。然后,当我添加“不喜欢”功能时,它不再起作用。惩罚以解决肮脏的问题。 :) 希望获得适当解决方案的支持,谢谢!
public bool UpdateFavProgramswithStationTableProgrammes(int favid, string station, string searchword1, string searchword2, string searchword3, string searchword4, string omitword1, string omitword2)
{
//Stringbuilder
try
{
using (var connection = new SQLiteConnection(System.IO.Path.Combine(folder, "WhatsUpDB.db")))
{
connection.Execute("UPDATE Programmes SET FoundFav=? WHERE (Title LIKE ? AND Title LIKE ? AND Title LIKE ? AND Title LIKE ?) AND (IFNULL(title, '') NOT LIKE ? AND IFNULL(title, '') NOT LIKE ?) AND Station=? AND Stoptime>=?", favid, searchword1, searchword2, searchword3, searchword4, omitword1, omitword2, station, DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm"));
return true;
}
}
catch (SQLiteException ex)
{
Log.Info("SQLiteEx", ex.Message);
return false;
}
例如:
用户输入(searchword1)“ Appels”和(Omitword1)“ Rotten”。结果应该是找到的记录为列值“苹果看起来很好”,从而更新了favflag(找到或收藏的标志)。