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字段
请大家帮忙看看,很急,谢谢!!
连接正常,可以读写记录集中已有的记录,但是无法增加记录,调用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字段
请大家帮忙看看,很急,谢谢!!
m_ptrCon.GetInterfacePtr(), adOpenStatic,adLockOptimistic,adCmdText);
可是现在又遇到新问题,就是新建一个记录后,赋值(同时有一个字段是blob类型),这时候update时会抛出异常([Oracle][ODBC]Function sequence error.)流程如下AddNew
PutCollect
AppendChunk
Update//这是抛出异常,这是到库中查看,没有新记录
但是将这段代码再执行一次,则没有提示,新建并更新成功
下面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"