我正在尝试创建一个按 3 列过滤列表的查询:
age = "2";
gender = "male";
race = "pitbull";
MySqlCommand tempCommand = _DbHandler.CreateCommand("SELECT * FROM dogs WHERE age = @age AND gender = @gender AND race = @race");
tempCommand.Parameters.AddWithValue("@age", age);
tempCommand.Parameters.AddWithValue("@gender", gender);
tempCommand.Parameters.AddWithValue("@race", race);
MySqlDataReader tempReader = tempCommand.ExecuteReader();
我希望能够让性别列获取任何值,如果这有效的话: 性别 = "*";
如何在一次查询中实现这一目标?
年龄、性别和种族是真实代码中的参数。
最佳答案
要捕获任何值,您只需不将该参数添加到查询中并且不将条件添加到 sql。
像这样的东西应该可以工作:
String sql = "SELECT * FROM dogs";
if ( age != "*" || gender != "*" || race != "*" )
sql += " WHERE 1=1";
if ( age != "*" ) sql += " AND age = @age";
if ( gender != "*" ) sql += " AND gender = @gender";
if ( race != "*" ) sql += " AND race = @race";
MySqlCommand tempCommand = _DbHandler.CreateCommand(sql);
if ( age != "*" ) tempCommand.Parameters.AddWithValue("@age", age);
if ( gender != "*" ) tempCommand.Parameters.AddWithValue("@gender", gender);
if ( race != "*" ) tempCommand.Parameters.AddWithValue("@race", race);
关于c# - 从列 = 任何值的表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453659/