0
private void PopuniListu(){
    listBox1.Items.Clear();

    conn = new OleDbConnection(connString);
    conn.Open();

    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT Imeiprezimeautora FROM Tabela1";

    dr = cmd.ExecuteReader();

    while (dr.Read())
    {
        listBox1.Items.Add(dr.GetValue(0));
    }

    dr.Close();
    conn.Close();
 }

这是错误:

没有为一个或多个必需参数指定值。

博士 = cmd.ExecuteReader()

4

1 回答 1

1

使用OleDb提供程序时(特别是 MS-Access,但我不能排除其他提供程序的相同),解析引擎会查看SELECT子句中列列表的每个部分是否存在于查询的表中。如果出于某种原因(通常是列名中的拼写错误),引擎找不到相应的列,它会将名称视为参数并期望在OleDbCommand.Parameters集合中提供参数。
如果不存在参数,则抛出上述错误。

另一种可能性是您没有cmd在上面的代码中初始化变量。
这意味着您正在为OleDbCommand.
可能已用于另一个查询的变量,其参数集合不为空。

在执行查询之前尝试添加这一行

cmd.Parameters.Clear();
cmd.CommandText = "SELECT Imeiprezimeautora FROM Tabela1";

但是,如果这是问题所在,那么我真的建议您重新考虑这种方法并避免使用全局变量进行此类工作。
在本地定义和初始化 OleDbCommand 没有可测量的性能损失

于 2013-12-09T18:25:56.450 回答