Vb.net Oracle.ManagedDataAccess.Client并使用addwithvalue/DBNull添加参数

Vb.net Oracle.ManagedDataAccess.Client并使用addwithvalue/DBNull添加参数,vb.net,oracle,parameter-passing,dbnull,oracle-manageddataaccess,Vb.net,Oracle,Parameter Passing,Dbnull,Oracle Manageddataaccess,这是我的查询和参数列表,我得到消息“Not All Variable bound” 若我在参数列表中的查询中只使用了client_name,那个么它就工作了,但当我使用client_name和product时,我得到了消息“notall Variable bound”您的SQL字符串有六个参数 **:DFrom** AND **:DTo** And (CLIENT_NAME = **:client** or **:client** is null) and (POLICY_PR

这是我的查询和参数列表,我得到消息“Not All Variable bound”


若我在参数列表中的查询中只使用了client_name,那个么它就工作了,但当我使用client_name和product时,我得到了消息“notall Variable bound”

您的SQL字符串有六个参数

**:DFrom** AND **:DTo** 
And    (CLIENT_NAME = **:client** or **:client** is null)  
and    (POLICY_PRODUCT = **:product** or **:product** 
因此,您必须提供六个参数:

cmd.Parameters.Add("DFrom", OracleDbType.Date).Value = DtpFrom.Value
cmd.Parameters.Add("DTo", OracleDbType.Date).Value = DtpTo.Value
cmd.Parameters.Add("Client", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbClient.Text), DBNull.Value, CmbClient.Text)
cmd.Parameters.Add("Client", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbClient.Text), DBNull.Value, CmbClient.Text)
cmd.Parameters.Add("Product", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbProduct.Text), DBNull.Value, CmbProduct.Text)
cmd.Parameters.Add("Product", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbProduct.Text), DBNull.Value, CmbProduct.Text)

我不知道参数名是否允许/需要
@
。然后您应该删除
ToSortDateString
。参数被声明为“代码> Oracle ByType。日期<代码>,因此只提供<代码>日期时间< /COD>值,您不必考虑任何格式主题——这是使用绑定参数而不是将值作为字符串的一个主要好处。

您是否已经指定了<代码> Stase.dBuln.Value<代码>作为值?如何以及在何处尝试(System.DBNull.Value)???请再详细解释一下-
cmd.Parameters.Add(“@Product”,OracleDbType.Varchar2)。Value=System.DBNull.Value
对于instancei,我尝试这样做,比如如果CmbProduct.Text=”那么cmd.Parameters.Add(“@Product”,OracleDbType.Varchar2)。Value=System.DBNull.Value Else cmd.Parameters.Add(“@Product”,OracleDbType.Varchar2).Value=CmbProduct.Text End如果--------------------------------------------------------------------------------------------Catch ex As Exception==未绑定所有变量……我正在使用Oracle.ManagedDataAccess.Client,它不支持AddWithValue。。。不是oracle参数集合的成员。。。。这才是真正的问题,你知道Domscheit,它的工作方式应该是,请解释一下为什么客户端和产品参数加两次和IIF(如果有两个II)?,基本上是im业务分析师。。。15年后没有程序员做过这种编程工作
IIf(String.IsNullOrEmpty(CmbClient.Text)、DBNull.Value、CmbClient.Text)
只是
If String.IsNullOrEmpty(CmbClient.Text)然后DBNull.Value Else CmbClient.Text的快捷方式,如果在SQL语句中定义了两次参数,则结束(即使他们有相同的名字,职位和总人数也很重要),因此您必须提供两次。再次感谢Wernfried Domscheit…我正在使用oracle 11g、vb.net 2015和Windows 10上的Crystal Reports开发一个应用程序,您能告诉我如何在客户端/服务器上部署该应用程序吗?我创建了一个软件包,并在同一网络上安装了另一台pc。软件包运行良好,但未禁用要连接到数据库…请为此打开一个新问题-带有代码和正确的错误消息。
cmd.Parameters.Add("DFrom", OracleDbType.Date).Value = DtpFrom.Value
cmd.Parameters.Add("DTo", OracleDbType.Date).Value = DtpTo.Value
cmd.Parameters.Add("Client", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbClient.Text), DBNull.Value, CmbClient.Text)
cmd.Parameters.Add("Client", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbClient.Text), DBNull.Value, CmbClient.Text)
cmd.Parameters.Add("Product", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbProduct.Text), DBNull.Value, CmbProduct.Text)
cmd.Parameters.Add("Product", OracleDbType.Varchar2).Value = IIf(String.IsNullOrEmpty(CmbProduct.Text), DBNull.Value, CmbProduct.Text)