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

本文关键字:搜索 访问 数据库 关键字 | 更新日期: 2023-09-27 18:20:34

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

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

当我输入"m"搜索"Microsoft"时,它会找到Microsoft,但如果我输入"o",它不会找到Microsoft。

如何更改SQL,使其查找包含该特定单词的所有内容?

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

当您搜索字母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块正确处理异常
string sql = "SELECT [identifier] FROM [information] WHERE INSTR([identifier]," + identifier +") != 0 ";

ACCESS函数INSTR()