使用关键字搜索访问数据库

时间:2013-07-02 02:33:59

标签: c# asp.net sql search

我正在使用以下SQL查询来搜索数据库。

string sql = "SELECT [identifier] FROM [information] WHERE [identifier] LIKE '" + identifier + "%'";

当我输入“m”搜索“Microsoft”时,它找到了Microsoft但是如果我输入“o”则找不到Microsoft。

如何更改SQL以便找到包含该特定单词的所有内容?

2 个答案:

答案 0 :(得分:0)

搜索字母o时,它搜索字符串 Microsoft 的原因是因为您的条件会根据起始字符进行过滤。

这种情况,

... WHERE [identifier] LIKE 'o%'

表示 ..给我所有以字符o 开头的字符串。如果要搜索contains字符o的字符串,则应使用%%进行包装。例如,

... WHERE [identifier] LIKE '%o%'

作为旁注,您应该参数化值以避免SQL Injection

试试这段代码:

string connStr = "connection string here";
string content = string.Format("{0}{1}{0}", "%", identifier);
string sqlStatement = "SELECT [identifier] FROM [information] WHERE [identifier] LIKE ?";
using (SqlConnection conn = new SqlConnection(connStr))
{
    using(SqlCommand comm = new SqlCommand())
    {
        comm.Connection = conn;
        comm.CommandText = sqlStatement;
        comm.CommandType = CommandType.Text;

        comm.Parameters.AddWithValue("@content", content);

        try
        {
            conn.Open();
            // other codes
        }
        catch(SqlException e)
        {
            // do something with the exception
            // do not hide it
            // e.Message.ToString()
        }
    }
}

正确编码

  • 使用using语句进行适当的对象处理
  • 使用try-catch块来正确处理异常

答案 1 :(得分:0)

string sql = "SELECT [identifier] FROM [information] WHERE INSTR([identifier]," + identifier +") != 0 ";

ACCESS function INSTR()