当我运行此代码编译的结果时,Visual Studio 会抛出上述异常:
requete = @"select v.[*] from Visite v, Infirmière i where v.[code_inf] = i.[code_inf]" /* +
" and i.[nom_inf]='" + nom + "'" +
" and i.[prenom_inf]='"+prenom+"'"+
" and v.[date_visite]=to_date('" + d.ToString().Substring(0, 10)+"','DD/MM/YYYY')" */
;
MessageBox.Show(requete);
OleDbCommand dbc = new OleDbCommand(requete, connec);
OleDbDataReader dr = dbc.ExecuteReader();
while(dr.Read())
{
dgv_res.Rows.Add(dr.Read());
}
dgv_res
是 datagridview 组件,connec
是打开的连接。
评论了我请求的一部分,看看其中是否有SQL错误,但我真的看不出第一行出了什么问题,我不断收到这个异常。我已经多次检查了列和表名称。
这
没有为一个或多个必需参数提供值
被扔到我认为创建OleDbDataReader
的地方。
感谢您的阅读!
> AFAIK中,您不能将[]
与*
一起使用,并且由于 OLE DB 提供程序不关心命名参数,因此它可能认为此[*]
是一个参数,并期望它的参数值。
如果除此之外一切都很好,这应该可以工作;
@"select v.* from Visite v, Infirmière i where v.[code_inf] = i.[code_inf]"
使用 [*]
时,数据库引擎认为您有一个确切地称为 *
的列名,而不是表中的所有列v
。