我用 odbc 的方法连接oracle 数据库,数据库已经连通了,但一下语句无法运行,
当运行到retest.update的时候vb就死掉了Private Sub Command1_Click()
    Dim cn As ADODB.Connection
    Dim rstest As ADODB.Recordset
    Dim cot As Integer
    Dim s As String
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.ConnectionString = "DSN=sbzwyy;Uid=system;Pwd=manager;"
    cn.Open
    
    Set retest = New ADODB.Recordset
    
    retest.Open "select grbh,djfs from ttt where rownum < 2", cn, adOpenDynamic, adLockOptimistic    If retest.RecordCount = 0 Then
      retest.AddNew
    End If
    
    s = "ee222"
    
    retest.Fields("grbh").Value = s
    retest.Fields("djfs").Value = "12"
        
    retest.Update
    retest.Close
    Set retest = Nothing
    
    
    cn.Close
    Set cn = Nothing
End Sub

解决方案 »

  1.   

    为什么不用ADO呢? VB在联接数据时,有时候可以有时候就报出错,不知那位大虾出来指定一下?
      

  2.   

    对了,你定义一个Dim rstest As ADODB.command,并加进去试试。
      

  3.   

    有错误提示吗?其实不用RecordSet也行。
    改用Insert语句,让cn.execute InsSQL 来执行,看行不行。
      

  4.   

    s = "ee222"
        
     retest.Fields("grbh").Value = s字符過長
      

  5.   

    谢谢我的98下没有ole db driver for oracle 驱动,只好用odbc连接
    谁有例子给我看看?
      

  6.   

    retest.Open "select grbh,djfs from ttt where rownum < 2", cn, adOpenDynamic, adLockOptimistic
    改为:
    retest.Open "select grbh,djfs from ttt where rownum < 2", cn, adOpenStatic, adLockBatchOptimistic
    试试!
      

  7.   

    在Update之前必须Edit或Add之所以死机是你已经有记录了没有执行Add语句。
      

  8.   

    huitiansou(豪) ( )  :是这种问题马
      

  9.   

    我的分析:如果你找到了记录
    那么你的retest.RecordCount<>0,
    那么retest.AddNew就没有执行。
    没有执行AddNew,也没有Edit,那Update就出错