C# 在查询中创建并使用参数

C# 在查询中创建并使用参数,c#,mysql,xaml,C#,Mysql,Xaml,我正在编写一个小型XAML/C#/MySQL数据库,并希望创建一个接受参数的查询。但是,我正在设置的测试查询在尝试创建时失败 var con = new MySqlConnection(ClsVariables.StrDb); con.Open(); var command = new MySqlCommand("", con); command = new MySqlCommand("Create View r2_Add_Edit_View as SELECT

我正在编写一个小型XAML/C#/MySQL数据库,并希望创建一个接受参数的查询。但是,我正在设置的测试查询在尝试创建时失败

    var con = new MySqlConnection(ClsVariables.StrDb);
    con.Open();
    var command = new MySqlCommand("", con);

command =
    new MySqlCommand("Create View r2_Add_Edit_View as SELECT era.contact_id, era.n_family FROM era WHERE era.contact_id = @ContactID", con)            command.ExecuteNonQuery();
    con.Close();
当我将@ContactID更改为一个特定的数字时,它可以正常工作

之后,我将需要创建一个记录集,并将参数传递给它(但我可以在第二个问题中询问)

一如既往地谢谢你

当我将@ContactID更改为一个特定的数字时,它可以正常工作

您不需要传递参数,只需将其添加到命令中即可:

public class MySqlConnector
{
    private readonly string _connString;

    public MySqlConnector(string connString)
    {
        _connString = connString;
    }

    private MySqlCommand _command;
    const string Sql = "Create View r2_Add_Edit_View as SELECT era.contact_id, era.n_family FROM era WHERE era.contact_id = @ContactID";

    public void CreateView(int contactId)
    {
        if(_command == null)
        {
            _command = new MySqlCommand();

            _command.CommandText = Sql;
            _command.Connection = _connString;
        }
        _command.Parameters.AddWithValue("@ContactID", contactId);
        _command.ExecuteNonQuery();
        _command.Close();
    }
}

尝试使用命令AddParameters方法

Add(“@ContactID”,SqlDbType.Int)


command.Parameters[“@ContactID”].Value=Value

请发布完整的代码谢谢Yair-我希望它是我可以在C#app中调用的东西,所以我真的不想每次都创建一个新的查询。你不必创建一个新的查询。你可以在类中缓存command对象,每次只设置不同的参数。对不起,我对这个有点陌生,所以不太确定如何做。这也不意味着查询不会被编译。@AndyDB看到了我的更新,它对
命令
对象提供了缓存支持。谢谢Yari-但是当我运行该代码时,我在ExecuteOnQuery上得到了一个异常错误:MySql.Data.MySqlClient.MySqlException类型的未处理异常发生在MySql.Data.dllI中,你能再给我一点帮助吗?谷歌说应该会帮助你。谢谢Gigi——虽然这很有趣,但这不是我想要的。