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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ogrodbcdatasource.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫(kù)
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/****************************************************************************** * $Id: ogrodbcdatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRODBCDataSource class. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2003, 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_odbc.h"#include "cpl_conv.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrodbcdatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                         OGRODBCDataSource()                          *//************************************************************************/OGRODBCDataSource::OGRODBCDataSource(){    pszName = NULL;    papoLayers = NULL;    nLayers = 0;    nKnownSRID = 0;    panSRID = NULL;    papoSRS = NULL;}/************************************************************************//*                         ~OGRODBCDataSource()                         *//************************************************************************/OGRODBCDataSource::~OGRODBCDataSource(){    int         i;    CPLFree( pszName );    for( i = 0; i < nLayers; i++ )        delete papoLayers[i];        CPLFree( papoLayers );    for( i = 0; i < nKnownSRID; i++ )    {        if( papoSRS[i] != NULL )            papoSRS[i]->Release();    }    CPLFree( panSRID );    CPLFree( papoSRS );}/************************************************************************//*                                Open()                                *//************************************************************************/int OGRODBCDataSource::Open( const char * pszNewName, int bUpdate,                             int bTestOpen ){    CPLAssert( nLayers == 0 );/* -------------------------------------------------------------------- *//*      Start parsing dataset name from the end of string, fetching     *//*      the name of spatial reference table and names for SRID and      *//*      SRTEXT columns first.                                           *//* -------------------------------------------------------------------- */    char *pszWrkName = CPLStrdup( pszNewName + 5 ); // Skip the 'ODBC:' part    char **papszTables = NULL;    char **papszGeomCol = NULL;    char *pszSRSTableName = NULL;    char *pszSRIDCol = NULL, *pszSRTextCol = NULL;    char *pszDelimiter;    if ( (pszDelimiter = strrchr( pszWrkName, ':' )) != NULL )    {        char *pszOBracket = strchr( pszDelimiter + 1, '(' );        if( pszOBracket == NULL )            pszSRSTableName = CPLStrdup( pszDelimiter + 1 );        else        {            char *pszCBracket = strchr( pszOBracket, ')' );            if( pszCBracket != NULL )                *pszCBracket = '\0';            char *pszComma = strchr( pszOBracket, ',' );            if( pszComma != NULL )            {                *pszComma = '\0';                pszSRIDCol = CPLStrdup( pszComma + 1 );            }                        *pszOBracket = '\0';            pszSRSTableName = CPLStrdup( pszDelimiter + 1 );            pszSRTextCol = CPLStrdup( pszOBracket + 1 );        }        *pszDelimiter = '\0';    }/* -------------------------------------------------------------------- *//*      Strip off any comma delimeted set of tables names to access     *//*      from the end of the string first.  Also allow an optional       *//*      bracketed geometry column name after the table name.            *//* -------------------------------------------------------------------- */    while( (pszDelimiter = strrchr( pszWrkName, ',' )) != NULL )    {        char *pszOBracket = strstr( pszDelimiter + 1, "(" );        if( pszOBracket == NULL )        {            papszTables = CSLAddString( papszTables, pszDelimiter + 1 );            papszGeomCol = CSLAddString( papszGeomCol, "" );        }        else        {            char *pszCBracket = strstr(pszOBracket,")");                        if( pszCBracket != NULL )                *pszCBracket = '\0';                        *pszOBracket = '\0';            papszTables = CSLAddString( papszTables, pszDelimiter + 1 );            papszGeomCol = CSLAddString( papszGeomCol, pszOBracket+1 );        }        *pszDelimiter = '\0';    }/* -------------------------------------------------------------------- *//*      Split out userid, password and DSN.  The general form is        *//*      user/password@dsn.  But if there are no @ characters the        *//*      whole thing is assumed to be a DSN.                             *//* -------------------------------------------------------------------- */    char *pszUserid = NULL;    char *pszPassword = NULL;    char *pszDSN = NULL;    if( strstr(pszWrkName,"@") == NULL )    {        pszDSN = CPLStrdup( pszWrkName );    }    else    {        char *pszTarget;        pszDSN = CPLStrdup(strstr(pszWrkName, "@") + 1);        if( *pszWrkName == '/' )        {            pszPassword = CPLStrdup(pszWrkName + 1);            pszTarget = strstr(pszPassword,"@");            *pszTarget = '\0';        }        else        {            pszUserid = CPLStrdup(pszWrkName);            pszTarget = strstr(pszUserid,"@");            *pszTarget = '\0';            pszTarget = strstr(pszUserid,"/");            if( pszTarget != NULL )            {                *pszTarget = '\0';                pszPassword = CPLStrdup(pszTarget+1);            }        }    }    CPLFree( pszWrkName );/* -------------------------------------------------------------------- *//*      Initialize based on the DSN.                                    *//* -------------------------------------------------------------------- */    CPLDebug( "OGR_ODBC",              "EstablishSession(DSN:\"%s\", userid:\"%s\", password:\"%s\")",               pszDSN, pszUserid ? pszUserid : "",              pszPassword ? pszPassword : "" );    if( !oSession.EstablishSession( pszDSN, pszUserid, pszPassword ) )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Unable to initialize ODBC connection to DSN for %s,\n"                  "%s",                   pszNewName+5, oSession.GetLastError() );        CSLDestroy( papszTables );        CSLDestroy( papszGeomCol );        CPLFree( pszDSN );        CPLFree( pszUserid );        CPLFree( pszPassword );        return FALSE;    }    CPLFree( pszDSN );    CPLFree( pszUserid );    CPLFree( pszPassword );    pszName = CPLStrdup( pszNewName );        bDSUpdate = bUpdate;/* -------------------------------------------------------------------- *//*      If no explicit list of tables was given, check for a list in    *//*      a geometry_columns table.                                       *//* -------------------------------------------------------------------- */    if( papszTables == NULL )    {        CPLODBCStatement oStmt( &oSession );                oStmt.Append( "SELECT f_table_name, f_geometry_column, geometry_type"                      " FROM geometry_columns" );        if( oStmt.ExecuteSQL() )        {            while( oStmt.Fetch() )            {                papszTables =                     CSLAddString( papszTables, oStmt.GetColData(0) );

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丰满岳乱妇一区二区三区| 91网页版在线| 亚洲综合视频在线观看| 日韩美一区二区三区| 91色|porny| 国产成人综合在线播放| 亚洲成精国产精品女| 国产精品久久久久永久免费观看| 欧美军同video69gay| 成人va在线观看| 精品一区二区三区香蕉蜜桃| 一区二区不卡在线播放| 国产精品天天看| 精品国产乱码久久久久久牛牛| 91久久免费观看| 国产超碰在线一区| 黄一区二区三区| 婷婷开心久久网| 一个色妞综合视频在线观看| 国产精品久久三| 国产亚洲综合性久久久影院| 91精品国产一区二区人妖| 日本韩国一区二区| 9人人澡人人爽人人精品| 国产精品夜夜嗨| 九九九久久久精品| 蜜臀av性久久久久蜜臀aⅴ| 亚洲午夜在线电影| 亚洲综合久久久| 日韩美女视频一区二区 | 日韩av电影免费观看高清完整版 | 亚洲444eee在线观看| 中文字幕亚洲综合久久菠萝蜜| 26uuu精品一区二区三区四区在线| 欧美日本韩国一区| 欧美日韩国产另类一区| 在线观看欧美黄色| 欧美在线看片a免费观看| 91免费观看在线| 91女厕偷拍女厕偷拍高清| 92国产精品观看| 95精品视频在线| 91蜜桃婷婷狠狠久久综合9色| 成人蜜臀av电影| 99麻豆久久久国产精品免费| 成人精品电影在线观看| 成人18视频在线播放| 波多野结衣中文一区| av激情亚洲男人天堂| 色综合久久综合| 在线观看91视频| 8v天堂国产在线一区二区| 日韩一二三四区| 久久看人人爽人人| 国产精品久久久久9999吃药| 亚洲欧美在线视频观看| 一区二区三区四区在线播放 | 日韩电影免费在线看| 美女视频免费一区| 国产福利一区二区三区视频 | 欧美日韩精品一区二区三区四区| 欧美高清视频不卡网| 精品少妇一区二区三区视频免付费| 精品日韩av一区二区| 中文字幕av不卡| 亚洲线精品一区二区三区| 蜜桃一区二区三区在线| 国内精品国产成人| 色综合av在线| 欧美日韩国产在线观看| 精品国产乱码久久久久久老虎| 国产日本亚洲高清| 一区二区三区在线视频观看58| 日本伊人精品一区二区三区观看方式| 美女久久久精品| av午夜精品一区二区三区| 欧美日韩精品高清| 国产日韩欧美激情| 亚洲一线二线三线视频| 国产一区二区三区在线观看精品 | 欧美剧情电影在线观看完整版免费励志电影| 91精品国产综合久久精品麻豆 | 欧美mv和日韩mv国产网站| 国产精品久久一级| 日本亚洲欧美天堂免费| av一区二区不卡| 日韩你懂的在线播放| 综合网在线视频| 蜜桃av噜噜一区| 91麻豆国产福利精品| 亚洲精品在线电影| 亚洲网友自拍偷拍| 丁香婷婷深情五月亚洲| 7777精品伊人久久久大香线蕉完整版| 欧美激情一区三区| 美日韩黄色大片| 在线免费观看日本一区| 久久久高清一区二区三区| 亚洲国产欧美一区二区三区丁香婷 | 国产精品国产三级国产aⅴ中文| 日韩电影在线观看一区| 色综合中文字幕国产| 日韩视频免费观看高清完整版| 日韩一区在线免费观看| 国产一区在线精品| 欧美一区二区三区精品| 亚洲黄色性网站| 丰满亚洲少妇av| 久久夜色精品国产噜噜av| 日韩高清在线一区| 色婷婷久久99综合精品jk白丝| 国产欧美一二三区| 极品美女销魂一区二区三区 | 日韩免费一区二区| 亚洲风情在线资源站| 91丨porny丨在线| 亚洲国产精华液网站w | 国产精品456| 日韩欧美高清dvd碟片| 亚洲aaa精品| 欧美日韩在线观看一区二区 | 亚洲激情图片小说视频| www.性欧美| 亚洲国产经典视频| 国产成人午夜精品影院观看视频| 欧美一级片在线| 日本不卡高清视频| 91精品国产综合久久久久久漫画| 亚洲国产三级在线| 欧美日韩一区 二区 三区 久久精品| 亚洲女厕所小便bbb| 99vv1com这只有精品| 国产精品国产三级国产有无不卡 | 亚洲日本电影在线| 成人免费va视频| 亚洲欧洲国产日韩| 色综合久久天天| 亚洲已满18点击进入久久| 91成人免费在线| 一区二区三区欧美日韩| 欧美视频一区在线| 午夜精品福利视频网站| 7777精品久久久大香线蕉| 日韩福利视频网| 日韩美女精品在线| 欧美在线视频全部完| 亚洲综合视频在线观看| 欧美中文字幕一区二区三区亚洲| 一区二区在线电影| 欧美肥胖老妇做爰| 久久成人18免费观看| 久久人人爽人人爽| av在线播放不卡| 亚洲一区在线视频| 欧美一级夜夜爽| 国产精品一区二区久久精品爱涩| 日本一区二区三区免费乱视频| 成人精品一区二区三区中文字幕 | 国产精品日韩精品欧美在线| 成人黄色软件下载| 夜夜揉揉日日人人青青一国产精品| 欧美日韩国产小视频在线观看| 另类专区欧美蜜桃臀第一页| 国产三级三级三级精品8ⅰ区| 91美女精品福利| 婷婷一区二区三区| 久久精品在线免费观看| 91美女在线观看| 天堂蜜桃一区二区三区| 久久久久久电影| 在线免费观看日韩欧美| 久久99精品久久只有精品| 国产精品网站在线| 在线播放国产精品二区一二区四区 | 国产欧美日产一区| 欧美影院一区二区| 极品少妇xxxx精品少妇| 亚洲视频综合在线| 欧美成人精品福利| 色综合久久九月婷婷色综合| 日本欧美久久久久免费播放网| 亚洲国产精品成人综合色在线婷婷| 欧美综合久久久| 国产精品资源站在线| 亚洲国产成人精品视频| 久久久久9999亚洲精品| 99re视频这里只有精品| 麻豆成人综合网| 亚洲综合在线第一页| 久久精品欧美一区二区三区不卡| 欧美性色黄大片| 成人综合婷婷国产精品久久| 日韩激情一区二区| 亚洲色图丝袜美腿| 精品久久一二三区| 精品视频999| 91在线精品秘密一区二区| 激情综合网av| 午夜精品久久久| 亚洲欧美色一区|