调用存储过程进行图片的插入或修改
发布时间:2020-12-12 15:54:12 所属栏目:MsSql教程 来源:网络整理
导读://pass ? blob ? to ? stored ? procedure ? ? ? //build ? by ? masterz ? 20050301 ? with ? VC2003,? Windows ? 2003,? SQLServer ? 2000. ? ? #include ? "stdafx.h" ? ? #import ? "C:/PROGRA~1/COMMON~1/System/ado/msado15.dll" ? rename( ? "EOF",?
//pass ? blob ? to ? stored ? procedure ? ? ? //build ? by ? masterz ? 20050301 ? with ? VC2003,? Windows ? 2003,? SQLServer ? 2000. ? ? #include ? "stdafx.h" ? ? #import ? "C:/PROGRA~1/COMMON~1/System/ado/msado15.dll" ? rename( ? "EOF",? "adoEOF" ? ) ? ? struct ? InitOle ? ? { ? ? InitOle() ? ? { ? ::CoInitialize(NULL); ? } ? ? ~InitOle() ? { ? ::CoUninitialize(); ? ? } ? ? } ? _init_InitOle_; ? ? void ? PrintProviderError(ADODB::_ConnectionPtr ? pConnection); ? ? ? ? void ? print_properties(LPCTSTR ? name,? ADODB::PropertiesPtr ? Properties) ? ? { ? ? long ? prop_count ? = ? Properties->GetCount(); ? ? printf("%s ? property ? count ? = ? %d/n",name,prop_count); ? ? for(long ? i=0;i<prop_count;i++) ? ? { ? ? printf("%s ? property ? [%d]:%s/n",i,(LPCSTR)Properties->GetItem(i)->Name); ? ? } ? ? } ? ? int ? main(int ? argc,? char* ? argv[]) ? ? { ? ? ADODB::_ConnectionPtr ? ? Conn1; ? ? ADODB::_CommandPtr ? ? ? ? Cmd1; ? ? ADODB::_ParameterPtr ? ? oldParam= ? NULL; ? ? ADODB::_ParameterPtr ? inParam=NULL; ? ? ADODB::_ParameterPtr ? blobParam=NULL; ? ? _variant_t ? ? vtEmpty ? (DISP_E_PARAMNOTFOUND,? VT_ERROR); ? ? _variant_t ? ? vtEmpty2 ? (DISP_E_PARAMNOTFOUND,? VT_ERROR); ? ? //_bstr_t ? ? ? ? bstrConnect="Provider=OraOLEDB.Oracle;Data ? Source=orcl;User ? Id=system;Password=oracle;"; ? ? ? _bstr_t ? ? ? ? bstrConnect="Driver={SQL ? Server};Server=localhost;Database=zxg;Uid=sa;Pwd=sa;" ? ; ? ? ? //create ? procedure ? dbo.insert_update_blob(@fn ? varchar(9),@filecontent ? image) ? as ? ? // ? if ? exists ? (select ? * ? from ? table1 ? where ? filename=@fn ? ) ? ? // ? begin ? ? // ? update ? table1 ? set ? content=@filecontent ? where ? filename=@fn ? ? // ? end ? ? // ? else ? ? // ? begin ? ? // ? insert ? table1 ? (filename,content) ? values(@fn,@filecontent) ? ? // ? end ? ? _bstr_t ? ? ? ? bstrSP("{CALL ? insert_update_blob(?,?)}" ? ); ? ? try ? ? { ? ? _variant_t ? varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR); ? ? ? ADODB::_StreamPtr ? adostream; ? ? adostream.CreateInstance(_T("ADODB.Stream")); ? ? adostream->Type ? = ? ADODB::adTypeBinary; ? ? adostream->Open(varOptional,ADODB::adModeUnknown,? ADODB::adOpenStreamUnspecified,? _T(""),? _T("")); ? ? ? adostream->LoadFromFile("C://masterz//20041229.rar"); ? ? _variant_t ? vReadTo ? = ? adostream->Read(ADODB::adReadAll); ? ? ? long ? blob_size ? = ? adostream->GetSize(); ? ? adostream->Close(); ? ? ? ? _bstr_t ? bstrEmpty; ? ? Conn1.CreateInstance( ? __uuidof( ? ADODB::Connection ? ) ? ); ? ? Cmd1.CreateInstance( ? __uuidof( ? ADODB::Command ? ) ? ); ? ? Conn1->ConnectionString ? = ? bstrConnect; ? ? Conn1->Open( ? bstrConnect,? bstrEmpty,? -1 ? ); ? ? Cmd1->ActiveConnection ? = ? Conn1; ? ? Cmd1->CommandText ? ? ? ? ? ? = ? bstrSP; ? ? Cmd1->CommandType ? ? ? ? ? ? = ? ADODB::adCmdText; ? ? Conn1->Properties->Refresh(); ? ? inParam ? = ? Cmd1->CreateParameter(_bstr_t("@fn"),ADODB::adChar,ADODB::adParamInput,2,_variant_t( ? "a" ? )); ? ? Cmd1->Parameters->Append(inParam); ? ? blobParam ? = ? Cmd1->CreateParameter(_bstr_t("@filecontent"),ADODB::adLongVarBinary,blob_size,vReadTo); ? ? Cmd1->Parameters->Append(blobParam); ? ? Cmd1->Properties->Refresh(); ? ? print_properties("Cmd1",Cmd1->Properties); ? ? Cmd1->Execute(NULL,NULL,ADODB::adExecuteNoRecords); ? ? Conn1->Close(); ? ? //select ? filename,datalength(content) ? from ? table1 ? where ? datalength(content)>0 ? ? } ? ? catch(_com_error ? &e) ? ? { ? ? _bstr_t ? bstrSource(e.Source()); ? ? _bstr_t ? bstrDescription(e.Description()); ? ? printf("/nCOM ? error ? occurred,? Source ? : ? %s ? /n ? Description ? : ? %s ? /n",(LPCSTR)bstrSource,(LPCSTR)bstrDescription); ? ? PrintProviderError(Conn1); ? ? } ? ? printf("/nprogram ? end/n"); ? ? return ? 0; ? ? } ? ? VOID ? PrintProviderError(ADODB::_ConnectionPtr ? pConnection) ? ? { ? ? ADODB::ErrorPtr ? ? pErr ? = ? NULL; ? ? long ? ? ? ? ? ? nCount ? = ? 0; ? ? long ? ? ? ? ? ? i ? = ? 0; ? ? if( ? (pConnection->Errors->Count) ? > ? 0) ? ? { ? ? nCount ? = ? pConnection->Errors->Count; ? ? for(i ? = ? 0; ? i ? < ? nCount; ? i++) ? ? { ? ? pErr ? = ? pConnection->Errors->GetItem(i); ? ? printf("/n/t ? Error ? number: ? %x/t%s",? pErr->Number,? (LPCSTR)pErr->Description); ? ? } ? ? } ? ? }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |