正在使用关键字搜索访问数据库
本文关键字:搜索 访问 数据库 关键字 | 更新日期: 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()