亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ogrocistatement.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogrocistatement.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  Oracle Spatial Driver * Purpose:  Implementation of OGROCIStatement, which encapsulates the  *           preparation, executation and fetching from an SQL statement. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2002, Frank Warmerdam <warmerdam@pobox.com> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/#include "ogr_oci.h"#include "cpl_conv.h"CPL_CVSID("$Id: ogrocistatement.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                          OGROCIStatement()                           *//************************************************************************/OGROCIStatement::OGROCIStatement( OGROCISession *poSessionIn ){    poSession = poSessionIn;    hStatement = NULL;    poDefn = NULL;    nRawColumnCount = 0;    papszCurColumn = NULL;    papszCurImage = NULL;    panCurColumnInd = NULL;    panFieldMap = NULL;    pszCommandText = NULL;}/************************************************************************//*                          ~OGROCIStatement()                          *//************************************************************************/OGROCIStatement::~OGROCIStatement(){    Clean();}/************************************************************************//*                               Clean()                                *//************************************************************************/void OGROCIStatement::Clean(){    int  i;    CPLFree( pszCommandText );    pszCommandText = NULL;    if( papszCurColumn != NULL )    {        for( i = 0; papszCurColumn[i] != NULL; i++ )            CPLFree( papszCurColumn[i] );    }    CPLFree( papszCurColumn );    papszCurColumn = NULL;    CPLFree( papszCurImage );    papszCurImage = NULL;        CPLFree( panCurColumnInd );    panCurColumnInd = NULL;    CPLFree( panFieldMap );    panFieldMap = NULL;    if( poDefn != NULL && poDefn->Dereference() <= 0 )    {        delete poDefn;        poDefn = NULL;    }    if( hStatement != NULL )    {        OCIHandleFree((dvoid *)hStatement, (ub4)OCI_HTYPE_STMT);        hStatement = NULL;    }}/************************************************************************//*                              Prepare()                               *//************************************************************************/CPLErr OGROCIStatement::Prepare( const char *pszSQLStatement ){    Clean();    CPLDebug( "OCI", "Prepare(%s)", pszSQLStatement );    pszCommandText = CPLStrdup(pszSQLStatement);    if( hStatement != NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Statement already executed once on this OGROCIStatement." );        return CE_Failure;    }/* -------------------------------------------------------------------- *//*      Allocate a statement handle.                                    *//* -------------------------------------------------------------------- */    if( poSession->Failed(         OCIHandleAlloc( poSession->hEnv, (dvoid **) &hStatement,                         (ub4)OCI_HTYPE_STMT,(size_t)0, (dvoid **)0 ),         "OCIHandleAlloc(Statement)" ) )        return CE_Failure;/* -------------------------------------------------------------------- *//*      Prepare the statement.                                          *//* -------------------------------------------------------------------- */    if( poSession->Failed(        OCIStmtPrepare( hStatement, poSession->hError,                         (text *) pszSQLStatement, strlen(pszSQLStatement),                        (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT ),        "OCIStmtPrepare" ) )        return CE_Failure;    return CE_None;}/************************************************************************//*                             BindObject()                             *//************************************************************************/CPLErr OGROCIStatement::BindObject( const char *pszPlaceName,                                     void *pahObjects, OCIType *hTDO,                                    void **papIndicators ){    OCIBind *hBindOrd = NULL;    if( poSession->Failed(             OCIBindByName( hStatement, &hBindOrd, poSession->hError,                           (text *) pszPlaceName, (sb4) strlen(pszPlaceName),                            (dvoid *) 0, (sb4) 0, SQLT_NTY, (dvoid *)0,                            (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0,                            (ub4)OCI_DEFAULT),            "OCIBindByName()") )        return CE_Failure;        if( poSession->Failed(            OCIBindObject( hBindOrd, poSession->hError, hTDO,                           (dvoid **) pahObjects, (ub4 *)0,                            (dvoid **)papIndicators, (ub4 *)0),            "OCIBindObject()" ) )        return CE_Failure;    return CE_None;}/************************************************************************//*                             BindScalar()                             *//************************************************************************/CPLErr OGROCIStatement::BindScalar( const char *pszPlaceName,                                     void *pData, int nDataLen,                                    int nSQLType, sb2 *paeInd ){    OCIBind *hBindOrd = NULL;    if( poSession->Failed(             OCIBindByName( hStatement, &hBindOrd, poSession->hError,                           (text *) pszPlaceName, (sb4) strlen(pszPlaceName),                            (dvoid *) pData, (sb4) nDataLen,                            (ub2) nSQLType, (dvoid *)paeInd, (ub2 *)0,                            (ub2 *)0, (ub4)0, (ub4 *)0,                            (ub4)OCI_DEFAULT),            "OCIBindByName()") )        return CE_Failure;    else        return CE_None;}/************************************************************************//*                              Execute()                               *//************************************************************************/CPLErr OGROCIStatement::Execute( const char *pszSQLStatement,                                 int nMode ){/* -------------------------------------------------------------------- *//*      Prepare the statement if it is being passed in.                 *//* -------------------------------------------------------------------- */    if( pszSQLStatement != NULL )    {        CPLErr eErr = Prepare( pszSQLStatement );        if( eErr != CE_None )            return eErr;    }    if( hStatement == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "No prepared statement in call to OGROCIStatement::Execute(NULL)" );        return CE_Failure;    }/* -------------------------------------------------------------------- *//*      Determine if this is a SELECT statement.                        *//* -------------------------------------------------------------------- */    ub2  nStmtType;    if( poSession->Failed(         OCIAttrGet( hStatement, OCI_HTYPE_STMT,                    &nStmtType, 0, OCI_ATTR_STMT_TYPE, poSession->hError ),        "OCIAttrGet(ATTR_STMT_TYPE)") )        return CE_Failure;        int bSelect = (nStmtType == OCI_STMT_SELECT);/* -------------------------------------------------------------------- *//*      Work out some details about execution mode.                     *//* -------------------------------------------------------------------- */    if( nMode == -1 )    {        if( bSelect )            nMode = OCI_DEFAULT;        else            nMode = OCI_COMMIT_ON_SUCCESS;    }/* -------------------------------------------------------------------- *//*      Execute the statement.                                          *//* -------------------------------------------------------------------- */    if( poSession->Failed(         OCIStmtExecute( poSession->hSvcCtx, hStatement,                         poSession->hError, (ub4)bSelect ? 0 : 1, (ub4)0,                         (OCISnapshot *)NULL, (OCISnapshot *)NULL, nMode ),        pszCommandText ) )        return CE_Failure;    if( !bSelect )        return CE_None;/* -------------------------------------------------------------------- *//*      Count the columns.                                              *//* -------------------------------------------------------------------- */    for( nRawColumnCount = 0; TRUE; nRawColumnCount++ )    {                                                                   OCIParam     *hParmDesc;        if( OCIParamGet( hStatement, OCI_HTYPE_STMT, poSession->hError,                          (dvoid**)&hParmDesc,                          (ub4) nRawColumnCount+1 ) != OCI_SUCCESS )            break;    }        panFieldMap = (int *) CPLCalloc(sizeof(int),nRawColumnCount);        papszCurColumn = (char **) CPLCalloc(sizeof(char*),nRawColumnCount+1);    panCurColumnInd = (sb2 *) CPLCalloc(sizeof(sb2),nRawColumnCount+1);        /* ==================================================================== *//*      Establish result column definitions, and setup parameter        *//*      defines.                                                        *//* ==================================================================== */    poDefn = new OGRFeatureDefn( pszCommandText );    poDefn->Reference();    for( int iParm = 0; iParm < nRawColumnCount; iParm++ )    {                                                                   OGRFieldDefn oField( "", OFTString );        OCIParam     *hParmDesc;        ub2          nOCIType;        ub4          nOCILen;/* -------------------------------------------------------------------- *//*      Get parameter definition.                                       *//* -------------------------------------------------------------------- */        if( poSession->Failed(             OCIParamGet( hStatement, OCI_HTYPE_STMT, poSession->hError,                          (dvoid**)&hParmDesc, (ub4) iParm+1 ),            "OCIParamGet") )            return CE_Failure;        if( poSession->GetParmInfo( hParmDesc, &oField, &nOCIType, &nOCILen )            != CE_None )            return CE_Failure;        if( oField.GetType() == OFTBinary )        {            panFieldMap[iParm] = -1;            continue;                           }        poDefn->AddFieldDefn( &oField );        panFieldMap[iParm] = poDefn->GetFieldCount() - 1;/* -------------------------------------------------------------------- *//*      Prepare a binding.                                              *//* -------------------------------------------------------------------- */        int nBufWidth = 256, nOGRField = panFieldMap[iParm];        OCIDefine *hDefn = NULL;        if( oField.GetWidth() > 0 )            nBufWidth = oField.GetWidth() + 2;        else if( oField.GetType() == OFTInteger )            nBufWidth = 22;        else if( oField.GetType() == OFTReal )            nBufWidth = 36;        papszCurColumn[nOGRField] = (char *) CPLMalloc(nBufWidth+2);        CPLAssert( ((long) papszCurColumn[nOGRField]) % 2 == 0 );        if( poSession->Failed(            OCIDefineByPos( hStatement, &hDefn, poSession->hError,                            iParm+1,                             (ub1 *) papszCurColumn[nOGRField], nBufWidth,                            SQLT_STR, panCurColumnInd + nOGRField,                             NULL, NULL, OCI_DEFAULT ),            "OCIDefineByPos" ) )            return CE_Failure;    }    return CE_None;}/************************************************************************//*                           SimpleFetchRow()                           *//************************************************************************/char **OGROCIStatement::SimpleFetchRow(){    int nStatus, i;        if( papszCurImage == NULL )    {        papszCurImage = (char **)             CPLCalloc(sizeof(char *), nRawColumnCount+1 );    }    nStatus = OCIStmtFetch( hStatement, poSession->hError, 1,                             OCI_FETCH_NEXT, OCI_DEFAULT );    if( nStatus == OCI_NO_DATA )        return NULL;    else if( poSession->Failed( nStatus, "OCIStmtFetch" ) )        return NULL;    for( i = 0; papszCurColumn[i] != NULL; i++ )    {        if( panCurColumnInd[i] == OCI_IND_NULL )            papszCurImage[i] = NULL;        else            papszCurImage[i] = papszCurColumn[i];    }    return papszCurImage;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本视频在线一区| 精品在线免费视频| 亚洲天堂福利av| 91在线视频免费91| 日韩av中文在线观看| 色婷婷av一区二区三区gif| 一区二区免费在线| 欧美肥大bbwbbw高潮| 成人国产精品免费网站| 免费在线一区观看| 亚洲一区二区三区影院| 国产蜜臀97一区二区三区| 欧美日韩一区二区三区免费看| 国产综合久久久久久久久久久久| 亚洲人吸女人奶水| 国产日韩精品一区二区三区在线| 欧美在线综合视频| 成人亚洲一区二区一| 狠狠久久亚洲欧美| 热久久免费视频| 亚洲第一二三四区| 亚洲欧洲综合另类在线| 欧美国产精品中文字幕| 久久一区二区三区四区| 精品欧美乱码久久久久久 | 最好看的中文字幕久久| 久久综合九色综合97婷婷女人| 欧美无砖砖区免费| 91久久精品一区二区二区| 国产91丝袜在线18| 成人一区二区三区视频 | 国产精品一色哟哟哟| 精品一区二区影视| 麻豆高清免费国产一区| 青青草原综合久久大伊人精品 | 国产精品不卡一区| 国产精品久久久久影院亚瑟| 欧美激情一区二区三区全黄 | 一区二区欧美视频| 亚洲激情自拍视频| 亚洲成人综合视频| 日日摸夜夜添夜夜添精品视频 | 亚洲综合区在线| 精品一区精品二区高清| 韩国视频一区二区| 麻豆国产91在线播放| 精品在线播放午夜| 欧美极品aⅴ影院| 久久噜噜亚洲综合| 成人免费一区二区三区视频| 欧美美女一区二区三区| 日韩亚洲欧美一区二区三区| 欧美日韩在线综合| 制服丝袜av成人在线看| 欧美成人一区二区三区| 精品免费国产二区三区| 国产午夜三级一区二区三| 国产精品久久国产精麻豆99网站| 亚洲欧美日韩成人高清在线一区| 亚洲激情第一区| 无码av中文一区二区三区桃花岛| 老司机午夜精品| 国产91在线观看丝袜| 91欧美一区二区| 欧美日韩性生活| 久久久国产一区二区三区四区小说| 国产精品久久三| 视频一区二区三区入口| 国产美女主播视频一区| 91在线国产福利| 91精品国产全国免费观看| 国产亚洲综合在线| 亚洲已满18点击进入久久| 久久99精品一区二区三区三区| 国产成人自拍高清视频在线免费播放| caoporn国产精品| 欧美一区二区三区在线电影 | 欧美一区二区三区视频在线| 国产亚洲欧洲一区高清在线观看| 日韩一区欧美一区| 无吗不卡中文字幕| 高清在线不卡av| 91精品婷婷国产综合久久| 欧美激情自拍偷拍| 亚洲图片欧美一区| 国产成人免费视频精品含羞草妖精| 色婷婷久久99综合精品jk白丝| 精品久久久久久无| 亚洲黄网站在线观看| 国产一区二区三区免费播放| 欧美三级韩国三级日本三斤| 国产欧美日韩在线| 视频一区免费在线观看| 91色综合久久久久婷婷| 久久精品视频免费| 日本不卡免费在线视频| 91麻豆国产福利在线观看| 精品国产乱码久久久久久1区2区| 亚洲欧美电影一区二区| 国产精品一卡二卡| 777午夜精品视频在线播放| 中文字幕在线免费不卡| 精品亚洲国内自在自线福利| 在线观看成人免费视频| 国产精品传媒在线| 国产在线精品国自产拍免费| 91精品国产美女浴室洗澡无遮挡| 亚洲视频一区二区免费在线观看| 国产酒店精品激情| 91精品国产91热久久久做人人| 亚洲乱码国产乱码精品精小说 | 日韩一区二区三区在线| 夜夜嗨av一区二区三区中文字幕| 成人性生交大合| 久久精品免费在线观看| 激情六月婷婷久久| 日韩精品自拍偷拍| 日韩激情中文字幕| 久久只精品国产| 日本亚洲天堂网| 欧美日韩国产高清一区二区三区| 亚洲女同女同女同女同女同69| 国产成+人+日韩+欧美+亚洲| 精品国产sm最大网站免费看| 喷水一区二区三区| 91麻豆精品国产91久久久久| 日韩电影网1区2区| 日韩一区二区免费在线电影| 午夜国产精品影院在线观看| 欧美性受xxxx| 亚洲国产精品综合小说图片区| 色八戒一区二区三区| 亚洲精品欧美激情| 欧美性感一区二区三区| 亚洲最新在线观看| 欧美丝袜丝交足nylons图片| 亚洲国产成人tv| 欧美一区二区在线不卡| 日本成人超碰在线观看| 555www色欧美视频| 奇米888四色在线精品| 日韩一区二区免费在线观看| 久久成人久久鬼色| 久久精品视频在线免费观看| 高清久久久久久| 亚洲欧洲日韩av| 色狠狠桃花综合| 午夜视频在线观看一区| 欧美一区二区人人喊爽| 国产一区欧美日韩| 国产精品电影一区二区| 欧美在线高清视频| 美女在线观看视频一区二区| 久久亚洲二区三区| 风间由美性色一区二区三区| 亚洲视频一二区| 欧美精品aⅴ在线视频| 久久福利视频一区二区| 国产香蕉久久精品综合网| 成人sese在线| 亚洲一区二区三区在线看| 欧美一区二区不卡视频| 国产乱国产乱300精品| 综合欧美亚洲日本| 欧美区在线观看| 国产成人午夜电影网| 国产精品成人在线观看| 欧美日韩视频不卡| 极品少妇一区二区| 国产精品久久久久久久久晋中| 欧美探花视频资源| 国产馆精品极品| 一区二区三区色| 欧美mv日韩mv亚洲| 一本高清dvd不卡在线观看| 强制捆绑调教一区二区| 国产精品久久三| 欧美一级在线观看| 99久久99久久免费精品蜜臀| 丝袜美腿亚洲色图| 国产精品国产自产拍高清av| 欧美精品丝袜中出| 波多野结衣亚洲一区| 免费在线观看视频一区| 国产精品家庭影院| 欧美成人乱码一区二区三区| 色综合久久久久综合体| 国产美女精品一区二区三区| 一区二区国产视频| 久久精品无码一区二区三区| 欧美日韩综合在线| 成人综合在线视频| 免费精品视频在线| 亚洲精品成a人| 国产欧美一区二区精品性色| 欧美精品三级在线观看| av网站一区二区三区| 国产一区二区视频在线| 婷婷开心激情综合| 亚洲欧洲中文日韩久久av乱码|