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();
}
这是错误:
没有给出一个或多个必需参数的值。
dr = cmd.ExecuteReader()
答案 0 :(得分:1)
当使用OleDb
提供程序时(特别是MS-Access,但我不能将其他提供程序排除在外),解析引擎会查看SELECT
列列表的每个部分查询表中存在子句。如果由于任何原因(通常是列名称中的拼写错误),引擎找不到相应的列,则会将该名称视为参数,并期望在OleDbCommand.Parameters
集合中提供参数。
如果没有参数,则抛出上述错误。
另一种可能性是您没有在上面的代码中初始化cmd
变量
这意味着您正在为OleDbCommand
使用全局变量
可能已用于另一个查询及其参数集合的变量不为空。
尝试在执行查询之前添加此行
cmd.Parameters.Clear();
cmd.CommandText = "SELECT Imeiprezimeautora FROM Tabela1";
然而,如果这是问题,那么我真的建议你重新考虑这种方法并避免这种工作的全局变量。
在本地定义和初始化OleDbCommand时,没有可衡量的性能损失