SqlDataAdapter:空结果

jgi*_*ich -2 c# sql sql-server sql-server-2005

我写了这个小函数来对SQL Server 2005数据库进行查询:

public DataSet Query(string query, Dictionary<string, string> parameters)
{
    DataSet result = new DataSet();

    using (SqlDataAdapter adapter = new SqlDataAdapter(query, sqlConnection))
    {
        adapter.SelectCommand.CommandType = CommandType.Text;
        adapter.SelectCommand.CommandText = query;
        foreach (KeyValuePair<string, string> pair in parameters)
        {
            adapter.SelectCommand.Parameters.Add(pair.Key, SqlDbType.Text).Value = pair.Value;
        }
        adapter.Fill(result);
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

当我这样称呼时:

Query("SELECT * FROM Database.Tab.le WHERE somecol LIKE '%1%'", new Dictionary<string, string>() {  });
Run Code Online (Sandbox Code Playgroud)

我得到了很多结果.但我想要的是这样称呼它:

Query("SELECT * FROM Database.Tab.le WHERE somecol LIKE '@number'", new Dictionary<string, string>() { {"@number", "%1%"}  });
Run Code Online (Sandbox Code Playgroud)

但是,这会返回零行.我想知道为什么以及如何解决它.

Dam*_*ith 6

试试下面

Query("SELECT * FROM Database.Tab.le WHERE somecol LIKE @number", new Dictionary<string, string>() { {"@number", "%1%"}  });
Run Code Online (Sandbox Code Playgroud)

(在sql中更改了'@number' @number并给出了参数as @number)