public List <PairData> executeQuery(SQLCommand query) { List <PairData> result = null; string queryString = query.query; string pattern = @"{\s{0,}SCORE\s{0,}(>|>=|<|<=|=)\s{0,}(@\w+)\s{0,}}"; Regex r = new Regex(pattern, RegexOptions.IgnoreCase); Match m = r.Match(queryString); if (query != null && m.Success) { String fullScorePart = m.Value; Group signGroup = m.Groups[1]; Group scoreParameterGroup = m.Groups[2]; string signParameterPart = signGroup.Value; string scoreParameterPart = scoreParameterGroup.Value; Dictionary <String, String> parameters = query.parameters; if (parameters.ContainsKey(scoreParameterPart)) { double scoreParameter = double.Parse(parameters[scoreParameterPart]); parameters.Remove(scoreParameterPart); String queryToExecute = r.Replace(queryString, "1 == 1"); SQLiteConnection connection = DBConnection.openDB(); SQLiteCommand command = new SQLiteCommand(queryToExecute, connection); command.CommandType = CommandType.Text; addAllParameters(parameters, command); SQLiteDataReader reader = command.ExecuteReader(); List <Data> datas = prepareDatas(reader); DBConnection.closeDB(); result = analyze(scoreParameter, datas, signParameterPart); } } return(result); }
public List <PairData> findTextScoreGreaterThen(double score) { SQLQueryExecutor executor = new SQLQueryExecutor(); SQLCommand command = new SQLCommand(); command.query = "SELECT * FROM TEXTS WHERE {SCORE > @score}"; command.parameters.Add("@score", score.ToString()); List <PairData> datas = executor.executeQuery(command); return(datas); }
public List <PairData> findTextWithWordContainsAndScoreLessEquals(string name, double score) { SQLQueryExecutor executor = new SQLQueryExecutor(); SQLCommand command = new SQLCommand(); command.query = "SELECT * FROM TEXTS WHERE CONTENT LIKE @content AND {SCORE <= @score}"; command.parameters.Add("@content", "%" + name + "%"); command.parameters.Add("@score", score.ToString()); List <PairData> datas = executor.executeQuery(command); return(datas); }
public List <PairData> findTextWithNameContainsAndScoreGreaterEquals(string name, double score) { SQLQueryExecutor executor = new SQLQueryExecutor(); SQLCommand command = new SQLCommand(); command.query = "SELECT * FROM TEXTS WHERE TITLE LIKE @title AND {SCORE >= @anotherscore}"; command.parameters.Add("@title", "%" + name + "%"); command.parameters.Add("@anotherscore", score.ToString()); List <PairData> datas = executor.executeQuery(command); return(datas); }