vb.net odp.net/如何在insert中使用ExecuteOnQuery()?

vb.net odp.net/如何在insert中使用ExecuteOnQuery()?,vb.net,odp.net,Vb.net,Odp.net,以下代码出现错误: Public Function Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oradb As String = "Data Source=fbdata;User Id=fbtrain;Password=password;" Using conn As New OracleConnection(or

以下代码出现错误:

    Public Function Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim oradb As String = "Data Source=fbdata;User Id=fbtrain;Password=password;"
    Using conn As New OracleConnection(oradb)

        Using cmd As New OracleCommand

            conn.CreateCommand()

            cmd.CommandText = "INSERT INTO BID " _
            + "(BID_ID, BID_NAME, BID_NAMEID, BID_STATUS, BID_FROM, BID_TO, BID_OWNER, NEW_USER, NEW_ZEIT, CHG_USER, CHG_ZEIT, AKTIV) VALUES " _
            + "(:1, :2, :2, '00', TO_DATE('01-JUL-16', 'DD-MON-RR'), TO_DATE('30-JUN-2099', 'DD-MON-RR'), '1', '1', SYSDATE, '1', SYSDATE, ' ')"

            Dim pcountbid As New OracleParameter
            pcountbid.OracleDbType = OracleDbType.Decimal

            Dim pprname As New OracleParameter
            pprname.OracleDbType = OracleDbType.Varchar2

            pprname.Value = prname
            pcountbid.Value = countbid

            cmd.Parameters.Add(pcountbid)
            cmd.Parameters.Add(pprname)

            conn.Open()
            Return cmd.ExecuteNonQuery()
        End Using
    End Using

End Function
错误是:

未处理InvalidOperationException


我所要做的就是绑定这些值并执行此查询以将数据插入到我的数据库中

使用“按位置绑定”模式(默认模式)时,正如您在此处所做的那样,必须按照SQL语句中显示的顺序将参数添加到
OracleParameterCollection
集合中。这意味着您实际上将有三个参数,即使其中两个参数是相同的(尽管我怀疑这是否真的是真的)。所以你的代码会变成这样

    cmd.CommandText = "INSERT INTO BID " _
    + "(BID_ID, BID_NAME, BID_NAMEID, BID_STATUS, BID_FROM, BID_TO, BID_OWNER, NEW_USER, NEW_ZEIT, CHG_USER, CHG_ZEIT, AKTIV) VALUES " _
    + "(:1, :2, :3, '00', TO_DATE('01-JUL-16', 'DD-MON-RR'), TO_DATE('30-JUN-2099', 'DD-MON-RR'), '1', '1', SYSDATE, '1', SYSDATE, ' ')"

    Dim pcountbid As New OracleParameter
    pcountbid.OracleDbType = OracleDbType.Decimal '<- ID decimal or really Int32???

    Dim pprname As New OracleParameter
    pprname.OracleDbType = OracleDbType.Varchar2

    Dim pprnameID As New OracleParameter
    pprname.OracleDbType = OracleDbType.Int32 'change to whatever type you really need

    pprname.Value = prname
    pprnameID.Value = CInt(prname) 'change as needed
    pcountbid.Value = countbid

    cmd.Parameters.Add(pcountbid)
    cmd.Parameters.Add(pprname)
    cmd.Parameters.Add(pprnameID)
    Dim pcountbid As New OracleParameter
    pcountbid.OracleDbType = OracleDbType.Decimal '<- ID decimal or really Int32???
    pcountbid.Value = countbid
    cmd.Parameters.Add(pcountbid)

    Dim pprname As New OracleParameter
    pprname.OracleDbType = OracleDbType.Varchar2
    pprname.Value = prname
    cmd.Parameters.Add(pprname)

    Dim pprnameID As New OracleParameter
    pprname.OracleDbType = OracleDbType.Int32 'change to whatever type you really need
    pprnameID.Value = CInt(prname) 'change as needed
    cmd.Parameters.Add(pprnameID)
cmd.CommandText=“插入投标”_
+(投标ID、投标名称、投标名称ID、投标状态、投标发件人、投标收件人、投标所有人、新用户、新用户、CHG用户、CHG用户、AKTIV)值_
+(:1,:2,:3,'00',截止日期('2016年7月1日,'DD-MON-RR'),截止日期('2099年6月30日,'DD-MON-RR'),'1,'1',系统日期,'1',系统日期,'
Dim pcountbid作为新的OracleParameter

pcountbid.OracleDbType=OracleDbType.Decimal'我希望BID_NAME和BID_NAMEID具有来自prname的相同字符串值。但是,即使将十进制更改为int32并使用3组值进行绑定,相同的错误仍然存在。还有其他想法吗?@SamaanShameem你能展示一下你在投标表中使用的create语句吗?