ado连接oracle 9i,用得odbc连接方式,连接字符串为"dsn=testdb;uid=system;pwd=manager",testdb为数据源名称,在odbc数据源中配置的,用得oracle in orahome90驱动
连接正常,可以读写记录集中已有的记录,但是无法增加记录,调用addnew后赋值,update时抛出异常,异常信息为:"多重步驟 OLE DB 操作發生錯誤。請檢查每一個可用的 OLE DB 狀態值。尚未完成任何操作"
记录集操作代码如下:
HRESULT hr = ptrSet->Open((LPCTSTR)"select * from DOCSERVER.DOCUMENT", 
m_ptrCon.GetInterfacePtr(), ADODB::adOpenStatic, ADODB::adLockOptimistic, ADODB::adCmdText); if(FAILED(hr))
{
TRACE("打开数据集失败");
return;
} try
{
ptrSet->AddNew();
COleVariant vValue("11111");
ptrSet->PutCollect("ID", vValue);

ptrSet->Update();
ptrSet->Close();
}表中就一个ID字段
请大家帮忙看看,很急,谢谢!!

解决方案 »

  1.   

    HRESULT hr = ptrSet->Open((LPCTSTR)"select * from DOCSERVER.DOCUMENT", 
    m_ptrCon.GetInterfacePtr(), adOpenStatic,adLockOptimistic,adCmdText);
      

  2.   

    ptrSet->PutCollect(_variant_t("ID"),_variant_t(vValue));试试吧!
      

  3.   

    问题已解决,是连接字符串的问题
    可是现在又遇到新问题,就是新建一个记录后,赋值(同时有一个字段是blob类型),这时候update时会抛出异常([Oracle][ODBC]Function sequence error.)流程如下AddNew
    PutCollect
    AppendChunk
    Update//这是抛出异常,这是到库中查看,没有新记录
    但是将这段代码再执行一次,则没有提示,新建并更新成功
      

  4.   

    http://dev.csdn.net/develop/article/21/21088.shtm
      

  5.   


    下面ORACLE的连接字符串举例,看看对你有没有什么帮助!
     Oracle 
     ODBC 
     New version:
    "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;" 
     Old version:
    "Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;" 
     OLE DB, OleDbConnection (.NET) 
     Standard security:
    "Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;" 
    This one's from Microsoft, the following are from Oracle
     Standard Security:
    "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;" 
     Trusted Connection:
    "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;" 
     OracleConnection (.NET) 
     Standard:
    "Data Source=Oracle8i;Integrated Security=yes"; 
    This one works only with Oracle 8i release 3 or later
     Declare the OracleConnection:C#:
    using System.Data.OracleClient;
    OracleConnection oOracleConn = new OracleConnection();
    oOracleConn.ConnectionString = "my connectionstring";
    oOracleConn.Open(); VB.NET:
    Imports System.Data.OracleClient
    Dim oOracleConn As OracleConnection = New OracleConnection()
    oOracleConn.ConnectionString = "my connectionstring"
    oOracleConn.Open() 
     Data Shape 
     MS Data Shape:
    "Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;user id=username;password=mypw"