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

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

?? ogrodbcdatasource.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************** * $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) );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费一区二区三区视频| 欧美tk—视频vk| 欧美一级片在线观看| 中文天堂在线一区| 琪琪久久久久日韩精品| 91视频xxxx| 久久精品视频在线看| 美女视频黄 久久| 欧美亚洲一区二区在线观看| 久久理论电影网| 久久er精品视频| 欧美日韩电影一区| 一区二区三区毛片| proumb性欧美在线观看| 国产亚洲一区字幕| 精品午夜久久福利影院 | 亚洲在线观看免费视频| 成人教育av在线| 国产日韩三级在线| 狠狠v欧美v日韩v亚洲ⅴ| 日韩午夜激情av| 日韩精品成人一区二区三区| 欧美性生活大片视频| 亚洲天堂福利av| 99re这里都是精品| 中文字幕亚洲欧美在线不卡| 大胆欧美人体老妇| 中文在线资源观看网站视频免费不卡| 精品一区二区日韩| 欧美成人国产一区二区| 国产精品123| 国产女人18水真多18精品一级做| 国产尤物一区二区| 国产亚洲短视频| 粉嫩嫩av羞羞动漫久久久| 国产精品三级久久久久三级| 高清久久久久久| 1000精品久久久久久久久| 色综合色狠狠天天综合色| 亚洲综合一区二区| 欧美日韩国产美| 日本视频中文字幕一区二区三区| 欧美久久久久久久久久| 美女高潮久久久| 国产亚洲一区二区在线观看| 成人黄色国产精品网站大全在线免费观看 | 成人avav影音| 亚洲美女免费在线| 欧美视频一区二| 奇米精品一区二区三区四区| 欧美精品一区二区三区蜜臀| 成人在线视频一区二区| 亚洲三级在线播放| 制服.丝袜.亚洲.中文.综合| 久久er精品视频| 国产精品大尺度| 欧美日韩国产一级片| 久草精品在线观看| 国产精品国产三级国产普通话蜜臀 | eeuss影院一区二区三区| 一区二区三区欧美亚洲| 91精品国产品国语在线不卡| 国产老肥熟一区二区三区| 国产精品久久久久久久岛一牛影视 | 蜜臀国产一区二区三区在线播放| 亚洲国产精品ⅴa在线观看| 在线欧美一区二区| 精品一区二区三区欧美| 中文字幕一区二区视频| 日韩欧美一二三四区| 成人av影视在线观看| 午夜精品123| 国产欧美一区二区精品婷婷 | 成人午夜电影久久影院| 亚洲一区在线视频| 国产欧美一区二区精品性| 69av一区二区三区| caoporen国产精品视频| 美国毛片一区二区| 一区二区三区高清不卡| 欧美国产一区二区| 日韩一级精品视频在线观看| 99国产精品久久久久久久久久| 在线看日本不卡| 99精品视频在线观看| 久久99精品国产麻豆婷婷洗澡| 亚洲欧美偷拍卡通变态| 久久精品一区二区三区不卡牛牛| 欧美精选在线播放| 色哟哟国产精品| www.亚洲人| 国产成人在线色| 激情久久五月天| 日韩中文字幕一区二区三区| 亚洲精品国产无天堂网2021 | 欧美精品一区二区三区蜜桃 | 精品一二三四区| 五月婷婷久久综合| 亚洲精品ww久久久久久p站| 精品少妇一区二区三区在线视频| 欧美亚洲动漫另类| 一本色道久久综合亚洲精品按摩| 丰满白嫩尤物一区二区| 国产成人亚洲综合a∨婷婷| 精油按摩中文字幕久久| 视频在线在亚洲| 亚洲第一狼人社区| 亚洲麻豆国产自偷在线| 亚洲欧美日韩小说| 亚洲精品国久久99热| 亚洲欧美偷拍卡通变态| 亚洲免费观看视频| 专区另类欧美日韩| 日韩久久一区二区| 亚洲精品视频在线观看网站| 亚洲丝袜制服诱惑| 一区二区三区四区不卡在线| 亚洲女人的天堂| 亚洲一区中文在线| 三级一区在线视频先锋 | 亚洲精品久久嫩草网站秘色| 亚洲蜜臀av乱码久久精品| 亚洲另类春色校园小说| 亚洲人精品午夜| 亚洲一区在线观看免费观看电影高清| 一区二区三区在线观看动漫 | 欧美成人精品3d动漫h| 精品久久久久久最新网址| 精品sm在线观看| 国产精品亲子乱子伦xxxx裸| 成人欧美一区二区三区1314| 一区二区三区小说| 日韩精品一级中文字幕精品视频免费观看| 天天影视涩香欲综合网| 精品亚洲成a人在线观看 | 亚洲视频一区在线观看| 一区二区三区四区不卡在线| 天堂av在线一区| 高清视频一区二区| 欧美日韩亚洲另类| 精品国产123| 成人欧美一区二区三区黑人麻豆 | 51精品秘密在线观看| 欧美tickling网站挠脚心| 国产日韩欧美麻豆| 亚洲国产欧美一区二区三区丁香婷| 日韩国产精品大片| 成人在线综合网站| 欧美疯狂做受xxxx富婆| 国产色婷婷亚洲99精品小说| 亚洲一区二区三区小说| 韩国av一区二区三区四区| 91免费视频观看| 精品区一区二区| 亚洲另类中文字| 国产精品一区二区黑丝| 在线免费精品视频| 国产农村妇女毛片精品久久麻豆 | 色婷婷激情一区二区三区| 日韩欧美国产麻豆| 一区二区三区欧美| 国产久卡久卡久卡久卡视频精品| 欧洲av一区二区嗯嗯嗯啊| 26uuuu精品一区二区| 亚洲成人你懂的| 成人精品高清在线| 精品国产乱码久久久久久1区2区| 一区二区三区色| caoporn国产精品| 久久精品一区二区三区四区| 日韩影院免费视频| 欧美在线不卡视频| 亚洲欧美在线另类| 粉嫩久久99精品久久久久久夜| 欧美一区二区三区日韩| 亚洲午夜视频在线观看| 色综合天天性综合| 国产精品视频观看| 亚洲精品一二三四区| 91蝌蚪国产九色| 天堂午夜影视日韩欧美一区二区| 国产福利91精品一区二区三区| 555www色欧美视频| 亚洲一区二区三区四区的| 99久久婷婷国产综合精品| 国产亚洲1区2区3区| 国产揄拍国内精品对白| 精品入口麻豆88视频| 日韩国产精品久久久| 宅男噜噜噜66一区二区66| 亚洲午夜精品在线| 色成人在线视频| 亚洲男同性恋视频| 色欧美乱欧美15图片| 一区二区三区四区在线播放 | 亚洲精品中文在线观看| 91香蕉视频在线| 国产精品久久久久影院老司| 成人激情小说乱人伦| 亚洲特级片在线|