缺少参数.[参数序数= 1]

Joe*_*ons 1 c# sql-server-ce

所以我一直在制作一个简单的c#win表单应用程序,用于传说相关联的东西,我一直在使用.SDF数据库,我很新.

在尝试创建搜索选项时,我遇到了此错误:

缺少参数.[参数序数= 1]

这是我的代码:(我确实在命令中添加了参数.)

public DataTable GetDataTableSummoners(string Summoner, string Champion)
{
    DataTable t = new DataTable();
    try
    {
        var cmd = new SqlCeCommand();
        cmd.CommandText = "SELECT * FROM Summoner";
        if (!String.IsNullOrEmpty(Summoner))
        {
            SqlCeParameter param = new SqlCeParameter();
            param.ParameterName = "@Summoner";
            param.Value = Summoner;
            cmd.Parameters.Add(param);

            cmd.CommandText = "SELECT * FROM Summoner WHERE name = @Summoner";
        }
        var adapter = new SqlCeDataAdapter(cmd.CommandText, conn);
        adapter.Fill(t);
    }
    catch (System.Data.SqlServerCe.SqlCeException ex)
    {
        System.Diagnostics.Debug.Print("Error: " + ex.Message);
    }
    return t;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

您正在将该参数添加到命令中 - 但是您在这里忽略了命令本身:

var adapter = new SqlCeDataAdapter(cmd.CommandText, conn);
Run Code Online (Sandbox Code Playgroud)

传递命令文本,该文本不包含参数.你要:

var adapter = new SqlCeDataAdapter(cmd, conn);
Run Code Online (Sandbox Code Playgroud)

(我还建议使用using命令语句,并更改方法参数名称以遵循.NET命名约定.哦,你似乎没有使用冠军参数......)

哦,你可以像这样更容易地添加参数(也指定类型,这是一个好主意):

cmd.Parameters.Add("@Summoner", SqlDbType.NVarChar).Value = Summoner;
Run Code Online (Sandbox Code Playgroud)