求“oci oracle调用接口程序实现文件保存到oracle数据库表BLOB字段”的实现方法,该如何解决
求“oci oracle调用接口程序实现文件保存到oracle数据库表BLOB字段”的实现方法
oci oracle调用接口程序实现文件保存到oracle数据库表BLOB字段,没做过这块,请做过的朋友提供下代码或方法,谢谢。
------解决方案--------------------
友情帮顶
没人回复,可以换个小论坛试试,……
------解决方案--------------------
先插入empty_blob()
再select blob from table for update
------解决方案--------------------
oci oracle调用接口程序实现文件保存到oracle数据库表BLOB字段,没做过这块,请做过的朋友提供下代码或方法,谢谢。
------解决方案--------------------
友情帮顶
没人回复,可以换个小论坛试试,……
------解决方案--------------------
先插入empty_blob()
再select blob from table for update
------解决方案--------------------
- C/C++ code
HRESULT COdb::WriteBlob(const CString TableName, const CString FieldName, BYTE* blob, int Size, CString guid) { OCILobLocator *lob; ub4 amtp; CString mySql; mySql.Format("Select %s From %s Where id = '%s' For Update",FieldName, TableName, guid); amtp = Size; OCIStmt *hpStatement = NULL; CheckErr( OCIHandleAlloc( m_po->hpEnv, (void**)&hpStatement, OCI_HTYPE_STMT, 0, NULL ) ); CheckErr(OCIDescriptorAlloc(m_po->hpEnv,(void**)&lob, OCI_DTYPE_LOB, (size_t) 0, (dvoid **) 0)); CleanWhitespace( mySql ); CheckErr(OCIStmtPrepare(hpStatement, m_po->hpErr,(text *)mySql.GetBuffer(0), (ub4)strlen(mySql), OCI_NTV_SYNTAX, OCI_DEFAULT)); OCIDefine *p_Define; CheckErr(OCIDefineByPos(hpStatement, &p_Define, m_po->hpErr, 1, (dvoid *) &lob, (sb4) -1, (ub2) SQLT_BLOB, 0, 0, 0, OCI_DEFAULT)); CheckErr(OCIStmtExecute(m_po->hpContext, hpStatement, m_po->hpErr, (ub4) 1, (ub4) 0, (OCISnapshot *) NULL, (OCISnapshot *) NULL, (ub4) OCI_DEFAULT)); CheckErr(OCILobWrite(m_po->hpContext, m_po->hpErr, lob, &amtp, (ub4) 1, blob, Size, OCI_ONE_PIECE, (dvoid *) 0, NULL, (ub2) 0, (ub1) 0)); OCITransCommit(m_po->hpContext,m_po->hpErr, (ub4)0); if ( hpStatement ) OCIHandleFree( hpStatement, OCI_HTYPE_STMT ); if (lob) OCIHandleFree(lob,OCI_DTYPE_LOB); return m_po->hr; }
------解决方案--------------------