asp.net mvc应用程序中基于关键字的搜索

时间:2016-08-23 14:07:13

标签: c# mysql asp.net asp.net-mvc

我在sql数据库的asp.net mvc应用程序中进行基于关键字的搜索。

数据库有一个表Resources,其中包含以下格式的条目:

资源 英语pdf 数学基础书 英语词汇

然后要求用户输入一个查询,该查询生成与查询匹配的资源:

e.g。用户输入“获取所有英文书籍”

query = "Get all english books";

我首先标记查询字符串并将内容推送到数组中:

string[] keywords = query.Split(' ');

我使用表中所有条目的所有关键字进行基于关键字的匹配。如果任何资源中存在任何关键字,则返回该行。

由于我不知道先前关键字的数量是多少,所以我必须编写一个动态查询字符串。这是我写的代码:

            using (SqlConnection sqlConnection = new SqlConnection(connectionString))
            {
                sqlConnection.Open();
                    // Tokenize the query 
                    String[] tokens = searchQuery.Split(' ');
                    if (tokens.Length != 0) {
                        string query = "SELECT * FROM Queries WHERE query LIKE '(%'" + "@0" + "'%)'";
                        for (int i = 1; i < tokens.Length; i++)
                            query += " OR query LIKE '(%'" + "@" + i + "'%)'";
                        query += ";";
                        Console.WriteLine("The query is : " + query);
                        Console.ReadLine();
                        SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);
                        sqlCommand.CommandType = System.Data.CommandType.Text;
                        for (int i = 0; i < tokens.Length; i++)
                            sqlCommand.Parameters.AddWithValue("@"+i, tokens[i]);
                        using (SqlDataReader reader = sqlCommand.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                Console.WriteLine("{0}", reader[1]);
                            }
                        }
                    }

这不会产生预期的输出。有人可以有这方面的经验。

0 个答案:

没有答案