在创建实际对象之前,有没有办法为MySQLCommand
对象创建参数?添加MySQL参数
目前我有设置生成的命令是这样的:
public static MySqlCommand User(MySqlConnection MySQL, User u)
{
var cmdVars = new List<string>();
const string cmd = "SELECT * FROM `schema`.`table` WHERE 1=1 AND ";
if (u.ID != null) cmdVars.Add("`ID` LIKE @0");
if (u.Username != null) cmdVars.Add("`Username` LIKE @1");
if (u.First != null) cmdVars.Add("`FirstName` LIKE @2");
if (u.Last != null) cmdVars.Add("`LastName` LIKE @3");
if (u.Phone != null) cmdVars.Add("`Phone` LIKE @4");
if (u.Extension != null) cmdVars.Add("`Extension` LIKE @5");
if (u.Email != null) cmdVars.Add("`Email` LIKE @6");
var MySqlCmd = new MySqlCommand(cmd + string.Join(" AND ", cmdVars), MySQL);
if (u.ID != null) MySqlCmd.Parameters.AddWithValue("@0", u.ID);
if (u.Username != null) MySqlCmd.Parameters.AddWithValue("@1", u.Username);
if (u.First != null) MySqlCmd.Parameters.AddWithValue("@2", u.First);
if (u.Last != null) MySqlCmd.Parameters.AddWithValue("@3", u.Last);
if (u.Phone != null) MySqlCmd.Parameters.AddWithValue("@4", u.Phone);
if (u.Extension != null) MySqlCmd.Parameters.AddWithValue("@5", u.Extension);
if (u.Email != null) MySqlCmd.Parameters.AddWithValue("@6", u.Email);
return MySqlCmd;
}
其中,虽然做工精细,是毛看会陆续添加更多的参数,并要求用户创建一个新的用户对象只是搜索一个值。
我认为切换到in this question所示的方法,但与MySQLConnector配合使用时,管理这些值变得过于复杂,并且没有为提高可读性做任何事情。
除了有'schema'.'table''和'”之间的区别schema'.'table'' – MethodMan
@MethodMan我不确定你想说什么。 – Uueerdo
我仍然不确定你的意思。在我发布的任何地方都没有单引号,“'”是MySQL用来包含模式,表和字段名的东西。 (_“弄明白”_使它看起来像你正在拖曳,并且实际上不能指出问题。) – Uueerdo