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

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

?? ogrmysqldatasource.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * $Id: ogrmysqldatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRMySQLDataSource class. * Author:   Frank Warmerdam, warmerdam@pobox.com * Author:   Howard Butler, hobu@hobu.net * ****************************************************************************** * Copyright (c) 2004, 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 <string>#include "ogr_mysql.h"#include <my_sys.h>#include "cpl_conv.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrmysqldatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                         OGRMySQLDataSource()                         *//************************************************************************/OGRMySQLDataSource::OGRMySQLDataSource(){    pszName = NULL;    papoLayers = NULL;    nLayers = 0;    hConn = 0;    nSoftTransactionLevel = 0;    nKnownSRID = 0;    panSRID = NULL;    papoSRS = NULL;    poLongResultLayer = NULL;}/************************************************************************//*                        ~OGRMySQLDataSource()                         *//************************************************************************/OGRMySQLDataSource::~OGRMySQLDataSource(){    int         i;    InterruptLongResult();    CPLFree( pszName );    for( i = 0; i < nLayers; i++ )        delete papoLayers[i];        CPLFree( papoLayers );    if( hConn != NULL )        mysql_close( hConn );    for( i = 0; i < nKnownSRID; i++ )    {        if( papoSRS[i] != NULL )            papoSRS[i]->Release();    }    CPLFree( panSRID );    CPLFree( papoSRS );}/************************************************************************//*                            ReportError()                             *//************************************************************************/void OGRMySQLDataSource::ReportError( const char *pszDescription ){    if( pszDescription )        CPLError( CE_Failure, CPLE_AppDefined,                   "MySQL error message:%s Description: %s",                   mysql_error( hConn ),                   pszDescription );    else        CPLError( CE_Failure, CPLE_AppDefined,                   "%s", mysql_error( hConn ) );}/************************************************************************//*                                Open()                                *//************************************************************************/int OGRMySQLDataSource::Open( const char * pszNewName, int bUpdate,                              int bTestOpen ){    CPLAssert( nLayers == 0 );/* -------------------------------------------------------------------- *//*      Verify MySQL prefix.                                            *//* -------------------------------------------------------------------- */    if( !EQUALN(pszNewName,"MYSQL:",6) )    {        if( !bTestOpen )            CPLError( CE_Failure, CPLE_AppDefined,                       "%s does not conform to MySQL naming convention,"                      " MYSQL:dbname[, user=..][,password=..][,host=..][,port=..][tables=table;table;...]",                      pszNewName );        return FALSE;    }    /* -------------------------------------------------------------------- *//*      Use options process to get .my.cnf file contents.               *//* -------------------------------------------------------------------- */    int nPort = 0, i;    char **papszTableNames=NULL;    std::string oHost, oPassword, oUser, oDB;    char *apszArgv[2] = { "org", NULL };    char **papszArgv = apszArgv;    int  nArgc = 1;    const char *client_groups[] = {"client", "ogr", NULL };    my_init(); // I hope there is no problem with calling this multiple times!    load_defaults( "my", client_groups, &nArgc, &papszArgv );    for( i = 0; i < nArgc; i++ )    {        if( EQUALN(papszArgv[i],"--user=",7) )            oUser = papszArgv[i] + 7;        else if( EQUALN(papszArgv[i],"--host=",7) )            oHost = papszArgv[i] + 7;        else if( EQUALN(papszArgv[i],"--password=",11) )            oPassword = papszArgv[i] + 11;        else if( EQUALN(papszArgv[i],"--port=",7) )            nPort = atoi(papszArgv[i] + 7);    }    // cleanup    free_defaults( papszArgv );/* -------------------------------------------------------------------- *//*      Parse out connection information.                               *//* -------------------------------------------------------------------- */    char **papszItems = CSLTokenizeString2( pszNewName+6, ",",                                             CSLT_HONOURSTRINGS );    if( CSLCount(papszItems) < 1 )    {        CSLDestroy( papszItems );        CPLError( CE_Failure, CPLE_AppDefined,                   "MYSQL: request missing databasename." );        return FALSE;    }    oDB = papszItems[0];    for( i = 1; papszItems[i] != NULL; i++ )    {        if( EQUALN(papszItems[i],"user=",5) )            oUser = papszItems[i] + 5;        else if( EQUALN(papszItems[i],"password=",9) )            oPassword = papszItems[i] + 9;        else if( EQUALN(papszItems[i],"host=",5) )            oHost = papszItems[i] + 5;        else if( EQUALN(papszItems[i],"port=",5) )            nPort = atoi(papszItems[i] + 5);        else if( EQUALN(papszItems[i],"tables=",7) )        {            papszTableNames = CSLTokenizeStringComplex(                 papszItems[i] + 7, ";", FALSE, FALSE );        }        else            CPLError( CE_Warning, CPLE_AppDefined,                       "'%s' in MYSQL datasource definition not recognised and ignored.", papszItems[i] );    }    CSLDestroy( papszItems );/* -------------------------------------------------------------------- *//*      Try to establish connection.                                    *//* -------------------------------------------------------------------- */    hConn = mysql_init( NULL );/* -------------------------------------------------------------------- *//*      Set the timeout for the connection if the users has specified.  *//* -------------------------------------------------------------------- */    const char *pszTimeoutLength =         CPLGetConfigOption( "MYSQL_TIMEOUT", "0" );      unsigned int timeout = atoi(pszTimeoutLength);            mysql_options(hConn, MYSQL_OPT_CONNECT_TIMEOUT, (char*)&timeout);        if( hConn == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                  "mysql_init() failed." );    }    if( hConn        && mysql_real_connect( hConn,                                oHost.length() ? oHost.c_str() : NULL,                               oUser.length() ? oUser.c_str() : NULL,                               oPassword.length() ? oPassword.c_str() : NULL,                               oDB.length() ? oDB.c_str() : NULL,                               nPort, NULL, CLIENT_INTERACTIVE ) == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                  "MySQL connect failed for: %s\n%s",                   pszNewName + 6, mysql_error( hConn ) );        mysql_close( hConn );        hConn = NULL;    }    if( hConn == NULL )    {        CSLDestroy( papszTableNames );        return FALSE;    }        pszName = CPLStrdup( pszNewName );        bDSUpdate = bUpdate;/* -------------------------------------------------------------------- *//*      Get a list of available tables.                                 *//* -------------------------------------------------------------------- */    if( papszTableNames == NULL )    {        MYSQL_RES *hResultSet;        MYSQL_ROW papszRow;        if( mysql_query( hConn, "SHOW TABLES" ) )        {            ReportError( "SHOW TABLES Failed" );            return FALSE;        }        hResultSet = mysql_store_result( hConn );        if( hResultSet == NULL )        {            ReportError( "mysql_store_result() failed on SHOW TABLES result.");            return FALSE;        }            while( (papszRow = mysql_fetch_row( hResultSet )) != NULL )        {            if( papszRow[0] == NULL )                continue;            if( EQUAL(papszRow[0],"spatial_ref_sys")                || EQUAL(papszRow[0],"geometry_columns") )                continue;            papszTableNames = CSLAddString(papszTableNames, papszRow[0] );        }        mysql_free_result( hResultSet );    }/* -------------------------------------------------------------------- *//*      Get the schema of the available tables.                         *//* -------------------------------------------------------------------- */    int iRecord;    for( iRecord = 0;          papszTableNames != NULL && papszTableNames[iRecord] != NULL;         iRecord++ )    {        //  FIXME: This should be fixed to deal with tables         //  for which we can't open because the name is bad/         OpenTable( papszTableNames[iRecord], bUpdate, FALSE );    }    CSLDestroy( papszTableNames );        return nLayers > 0 || bUpdate;}/************************************************************************//*                             OpenTable()                              *//************************************************************************/int OGRMySQLDataSource::OpenTable( const char *pszNewName, int bUpdate,                                int bTestOpen ){/* -------------------------------------------------------------------- *//*      Create the layer object.                                        *//* -------------------------------------------------------------------- */    OGRMySQLTableLayer  *poLayer;    OGRErr eErr;    poLayer = new OGRMySQLTableLayer( this, pszNewName, bUpdate );    eErr = poLayer->Initialize(pszNewName);    if (eErr == OGRERR_FAILURE)        return FALSE;/* -------------------------------------------------------------------- *//*      Add layer to data source layer list.                            *//* -------------------------------------------------------------------- */    papoLayers = (OGRMySQLLayer **)        CPLRealloc( papoLayers,  sizeof(OGRMySQLLayer *) * (nLayers+1) );    papoLayers[nLayers++] = poLayer;        return TRUE;}/************************************************************************//*                           TestCapability()                           *//************************************************************************/int OGRMySQLDataSource::TestCapability( const char * pszCap ){	    if( EQUAL(pszCap, ODsCCreateLayer) )        return TRUE;	if( EQUAL(pszCap, ODsCDeleteLayer))		return TRUE;    else        return FALSE;}/************************************************************************//*                              GetLayer()                              *//************************************************************************/OGRLayer *OGRMySQLDataSource::GetLayer( int iLayer ){    if( iLayer < 0 || iLayer >= nLayers )        return NULL;    else        return papoLayers[iLayer];}/************************************************************************//*                      InitializeMetadataTables()                      *//*                                                                      *//*      Create the metadata tables (SPATIAL_REF_SYS and                 *//*      GEOMETRY_COLUMNS). This method "does no harm" if the tables     *//*      exist and can be called at will.                                *//************************************************************************/OGRErr OGRMySQLDataSource::InitializeMetadataTables(){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人精品午夜| 成人高清视频在线观看| av午夜一区麻豆| 欧美男男青年gay1069videost| 久久综合色鬼综合色| 亚洲综合色丁香婷婷六月图片| 国内精品久久久久影院色| 在线免费观看日本欧美| 日本一区二区视频在线| 久久国产婷婷国产香蕉| 欧美怡红院视频| 亚洲视频你懂的| 成人理论电影网| 精品sm捆绑视频| 麻豆精品蜜桃视频网站| 在线观看日韩国产| 国产精品久久久久久久久快鸭 | 国内精品伊人久久久久av影院| av在线综合网| 欧美精品一区男女天堂| 亚洲国产欧美在线| 粉嫩aⅴ一区二区三区四区| 3d动漫精品啪啪1区2区免费| 亚洲精品中文字幕乱码三区| 国产精品2024| 日韩免费看的电影| 亚洲午夜久久久久久久久电影网 | 精品福利av导航| 午夜a成v人精品| 一本久久a久久精品亚洲| 久久久99精品久久| 精品一区二区三区香蕉蜜桃| 精品国产免费视频| 亚洲精品一卡二卡| 懂色av中文字幕一区二区三区| 7777精品伊人久久久大香线蕉最新版 | 日韩欧美国产综合一区 | 国产一区二区剧情av在线| 欧美一区午夜视频在线观看| 亚洲综合色视频| 成人精品免费视频| 亚洲国产高清在线观看视频| 国产91综合一区在线观看| 国产日韩欧美一区二区三区综合| 国产在线一区观看| 久久精品在线免费观看| 国产麻豆精品在线| 久久久久国产免费免费| 国产自产高清不卡| 国产日韩欧美在线一区| 国产suv精品一区二区883| 国产欧美精品一区二区色综合| 加勒比av一区二区| 日韩精品一区二区三区中文不卡 | 国产成人精品一区二区三区四区 | 黄色日韩三级电影| 久久久亚洲午夜电影| 精品一区二区日韩| 久久蜜桃av一区二区天堂| 国产精品资源站在线| 国产精品视频yy9299一区| 国产成人啪免费观看软件| 国产精品久久久久久福利一牛影视| 成人高清视频在线观看| 一区二区三区中文字幕在线观看| 欧美视频一区二区| 久久精品国产久精国产| 国产欧美一区二区精品婷婷| 99久久精品一区二区| 一区二区三区av电影| 91.成人天堂一区| 精品亚洲成a人| 国产亚洲一区字幕| 一本久久a久久精品亚洲| 日本视频免费一区| 国产日产欧美一区二区视频| 成人在线视频一区二区| 亚洲无线码一区二区三区| 欧美一区二区三区性视频| 国产乱码一区二区三区| 国产精品二三区| 777a∨成人精品桃花网| 激情丁香综合五月| 一区二区在线观看av| 日韩一区二区免费电影| www.亚洲免费av| 日韩va欧美va亚洲va久久| 国产色91在线| 欧美浪妇xxxx高跟鞋交| 成人免费观看视频| 一区二区三区四区不卡在线| 欧美va亚洲va香蕉在线| 色婷婷综合中文久久一本| 久久精品国产澳门| 亚洲欧美日韩一区二区三区在线观看| 欧美精品久久99久久在免费线 | 国产精品丝袜黑色高跟| 欧美天天综合网| 国产a久久麻豆| 日韩电影在线看| 伊人性伊人情综合网| 久久久久国产精品免费免费搜索| 91麻豆免费观看| 免费观看在线综合| 最新日韩av在线| 欧美国产97人人爽人人喊| 日韩欧美一区二区三区在线| 91激情五月电影| 成人av在线网| 黄色成人免费在线| 男女视频一区二区| 天天综合天天综合色| √…a在线天堂一区| 精品国产露脸精彩对白| 在线综合视频播放| 欧美性受极品xxxx喷水| 成人高清视频免费观看| 丁香啪啪综合成人亚洲小说 | 一区二区激情视频| 亚洲午夜精品在线| 国产欧美日韩综合| 日韩一级二级三级精品视频| 欧洲精品视频在线观看| 北条麻妃一区二区三区| 大桥未久av一区二区三区中文| 久久国产人妖系列| 久久国产尿小便嘘嘘尿| 五月天丁香久久| 香蕉av福利精品导航| 一区二区视频在线看| 自拍偷拍亚洲激情| 国产精品剧情在线亚洲| 国产精品拍天天在线| 日韩美女视频一区| 亚洲另类在线视频| 国产精品入口麻豆九色| 久久综合资源网| 欧美一级淫片007| 精品久久国产字幕高潮| 久久综合久久久久88| 久久精品一区二区三区四区| 日韩欧美激情在线| 久久网站热最新地址| 国产亚洲午夜高清国产拍精品 | 亚洲欧洲日韩av| 亚洲三级免费电影| 亚洲久草在线视频| 日韩综合在线视频| 激情五月婷婷综合网| 国产一区二区电影| 99精品在线免费| 欧美视频在线不卡| 欧美日高清视频| 久久麻豆一区二区| 亚洲乱码国产乱码精品精的特点| 亚洲成av人影院| 国产专区欧美精品| 99视频国产精品| 欧美高清视频不卡网| 精品少妇一区二区三区| 国产精品全国免费观看高清| 亚洲一区二区三区四区的| 久久国产精品99精品国产| 99这里只有精品| 制服丝袜中文字幕一区| 国产三区在线成人av| 日韩专区中文字幕一区二区| 国产91丝袜在线观看| 51久久夜色精品国产麻豆| 91精品视频网| 国产精品成人一区二区艾草 | 欧美一卡二卡在线| 中文字幕不卡在线播放| 午夜欧美在线一二页| 国产激情一区二区三区桃花岛亚洲| 一本一本久久a久久精品综合麻豆| 制服丝袜在线91| 综合自拍亚洲综合图不卡区| 日韩中文字幕1| 99久久综合精品| 久久综合久久综合亚洲| 一区二区三区免费在线观看| 国产精品一品视频| 欧美日本精品一区二区三区| 中日韩av电影| 午夜精品一区在线观看| 爽爽淫人综合网网站| 在线精品视频免费观看| 国产日韩av一区二区| 免费成人小视频| 欧洲亚洲国产日韩| 亚洲视频免费在线| 成人黄色av电影| 26uuu欧美| 久热成人在线视频| 欧美精品日日鲁夜夜添| 国产人成亚洲第一网站在线播放| 一区二区三区在线不卡| 国产一区二区精品在线观看| 久久午夜电影网|