dim cn as new oledbconnection(Strconn)
cn.Open()
dim cmd as new oledbcommand("INSERT INTO TableName (id) VALUES (id.nextval)",cn)
cmd.ExecuteNonQuery()
可以插入.用下面的方法就出错了
 Dim cmd As New OleDbCommand("INSERT INTO TableName (id) VALUES (?)", cn)
 Dim pxw As OleDbParameter
 pxw = New OleDbParameter("id", OleDbType.LongVarChar)
 pxw.Value = "id.nextval"
 cmd.Parameters.Add(pxw)
 cmd.ExecuteNonQuery()是不是OleDbType.LongVarChar不对?哪应该用什么类型?我试了很多都不行.哪位大哥可以帮我?

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=C0B53A2D-EF45-4E07-9C95-2849700F32A8你可以参考一下
      

  2.   

    谢谢hackate,但这不是我想要的答案.
      

  3.   

    Dim cmd As New OleDbCommand("INSERT INTO TableName (id) VALUES (:id)", cn)
    如上使用
      

  4.   

    Dim cmd As New OleDbCommand("INSERT INTO TableName (id) VALUES (null)", cn)
    自增字段使用null即可
      

  5.   

    Dim cmd As New OleDbCommand("INSERT INTO TableName (id) VALUES (null)", cn)
    自增字段使用null即可
    ---------------------------
    不会吧,这可是oracle数据库哦
      

  6.   

    hchxxzx(NET?摸到一点门槛):
       我用的是OleDB连接数据库.不是OracleClient连接的,所以我的参数应该是正确的.
      

  7.   

    上面我说错了
    oracle数据库的自增字段是通过sequence来管理的我们必须先新建一个sequence,然后使用sequence里面的值来赋值
      

  8.   


    在数据库已经创建好了一个sequence,  直接用SQL可以插入,问题是用参数化命令怎么正常插入.
      

  9.   

    不要传参数了,自增字段我们不能插入啊
    使用这个语句比如你的sequence名字是id_sequence
    那么语句就是
    Dim cmd As New OleDbCommand("INSERT INTO TableName (id) VALUES (id_sequence.nextval)", cn)
      

  10.   

    jFresH_MaN(TM):
        这样是可以插入.问题是不可能这张表只有一个字段吧,可能有 Name 字段,而Name字段的值我要用参数插入,那么 id 字段的值也只能用参数了
      

  11.   

    晕,你完全可以不用理会这个参数啊语句这么写
    insert into TableName (id,name) VALUES (id_sequence.nextval,?);
    或者
    insert into TableName (name) VALUES (nextval,?);直接不用管这列
      

  12.   

    谢谢jFresH_MaN(TM).
    马上结帖