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

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

?? ogrsqlitetablelayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*                            CreateField()                             *//************************************************************************/OGRErr OGRSQLiteTableLayer::CreateField( OGRFieldDefn *poFieldIn,                                          int bApproxOK ){    char                szFieldType[256];    OGRFieldDefn        oField( poFieldIn );    ResetReading();/* -------------------------------------------------------------------- *//*      Do we want to "launder" the column names into Postgres          *//*      friendly format?                                                *//* -------------------------------------------------------------------- */    if( bLaunderColumnNames )    {        char    *pszSafeName = poDS->LaunderName( oField.GetNameRef() );        oField.SetName( pszSafeName );        CPLFree( pszSafeName );    }    /* -------------------------------------------------------------------- *//*      Work out the PostgreSQL type.                                   *//* -------------------------------------------------------------------- */    if( oField.GetType() == OFTInteger )    {        strcpy( szFieldType, "INTEGER" );    }    else if( oField.GetType() == OFTReal )    {        strcpy( szFieldType, "FLOAT" );    }    else    {        strcpy( szFieldType, "VARCHAR" );    }/* -------------------------------------------------------------------- *//*      How much space do we need for the list of fields.               *//* -------------------------------------------------------------------- */    int iField, nFieldListLen = 100;    char *pszOldFieldList, *pszNewFieldList;    for( iField = 0; iField < poFeatureDefn->GetFieldCount(); iField++ )    {        nFieldListLen +=             strlen(poFeatureDefn->GetFieldDefn(iField)->GetNameRef()) + 50;    }    nFieldListLen += strlen( oField.GetNameRef() );    pszOldFieldList = (char *) CPLCalloc(1,nFieldListLen);    pszNewFieldList = (char *) CPLCalloc(1,nFieldListLen);/* -------------------------------------------------------------------- *//*      Build list of old fields, and the list of new fields.           *//* -------------------------------------------------------------------- */    const char *pszType;    sprintf( pszOldFieldList, "%s", "OGC_FID" );    sprintf( pszNewFieldList, "%s", "OGC_FID INTEGER PRIMARY KEY" );        int iNextOrdinal = 3; /* _rowid_ is 1, OGC_FID is 2 */    if( poFeatureDefn->GetGeomType() != wkbNone )    {        strcat( pszOldFieldList, ", WKT_GEOMETRY" );        strcat( pszNewFieldList, ", WKT_GEOMETRY VARCHAR" );        iNextOrdinal++;    }    for( iField = 0; iField < poFeatureDefn->GetFieldCount(); iField++ )    {        OGRFieldDefn *poFldDefn = poFeatureDefn->GetFieldDefn(iField);        // we already added OGC_FID so don't do it again        if( EQUAL(poFldDefn->GetNameRef(),"OGC_FID") )            continue;        if( poFldDefn->GetType() == OFTInteger )            pszType = "INTEGER";        else if( poFldDefn->GetType() == OFTReal )            pszType = "FLOAT";        else            pszType = "VARCHAR";                sprintf( pszOldFieldList+strlen(pszOldFieldList),                  ", '%s'", poFldDefn->GetNameRef() );        sprintf( pszNewFieldList+strlen(pszNewFieldList),                  ", '%s' %s", poFldDefn->GetNameRef(), pszType );        iNextOrdinal++;    }/* -------------------------------------------------------------------- *//*      Add the new field.                                              *//* -------------------------------------------------------------------- */    if( oField.GetType() == OFTInteger )        pszType = "INTEGER";    else if( oField.GetType() == OFTReal )        pszType = "FLOAT";    else        pszType = "VARCHAR";        sprintf( pszNewFieldList+strlen(pszNewFieldList),              ", '%s' %s", oField.GetNameRef(), pszType );/* ==================================================================== *//*      Backup, destroy, recreate and repopulate the table.  SQLite     *//*      has no ALTER TABLE so we have to do all this to add a           *//*      column.                                                         *//* ==================================================================== *//* -------------------------------------------------------------------- *//*      Do this all in a transaction.                                   *//* -------------------------------------------------------------------- */    poDS->SoftStartTransaction();/* -------------------------------------------------------------------- *//*      Make a backup of the table.                                     *//* -------------------------------------------------------------------- */    int rc;    char *pszErrMsg = NULL;    sqlite3 *hDB = poDS->GetDB();        rc = sqlite3_exec( hDB,                        CPLSPrintf( "CREATE TEMPORARY TABLE t1_back(%s)",                                   pszOldFieldList ),                       NULL, NULL, &pszErrMsg );    if( rc == SQLITE_OK )        rc = sqlite3_exec( hDB,                            CPLSPrintf( "INSERT INTO t1_back SELECT %s FROM '%s'",                                       pszOldFieldList,                                        poFeatureDefn->GetName() ),                           NULL, NULL, &pszErrMsg );/* -------------------------------------------------------------------- *//*      Drop the original table, and recreate with new field.           *//* -------------------------------------------------------------------- */    if( rc == SQLITE_OK )        rc = sqlite3_exec( hDB,                            CPLSPrintf( "DROP TABLE '%s'",                                        poFeatureDefn->GetName() ),                           NULL, NULL, &pszErrMsg );    if( rc == SQLITE_OK )    {        const char *pszCmd =             CPLSPrintf( "CREATE TABLE '%s' (%s)",                         poFeatureDefn->GetName(),                        pszNewFieldList );        rc = sqlite3_exec( hDB, pszCmd,                            NULL, NULL, &pszErrMsg );        CPLDebug( "OGR_SQLITE", "exec(%s)", pszCmd );    }/* -------------------------------------------------------------------- *//*      Copy backup field values into new table.                        *//* -------------------------------------------------------------------- */        if( rc == SQLITE_OK )        rc = sqlite3_exec( hDB,                            CPLSPrintf( "INSERT INTO '%s' SELECT %s, NULL FROM t1_back",                                       poFeatureDefn->GetName(),                                       pszOldFieldList ),                           NULL, NULL, &pszErrMsg );/* -------------------------------------------------------------------- *//*      Cleanup backup table.                                           *//* -------------------------------------------------------------------- */        if( rc == SQLITE_OK )        rc = sqlite3_exec( hDB,                            CPLSPrintf( "DROP TABLE t1_back" ),                           NULL, NULL, &pszErrMsg );/* -------------------------------------------------------------------- *//*      COMMIT on success or ROLLBACK on failuire.                      *//* -------------------------------------------------------------------- */    if( rc == SQLITE_OK )    {        poDS->SoftCommit();    }    else    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Failed to add field %s to table %s:\n %s",                  oField.GetNameRef(), poFeatureDefn->GetName(),                   pszErrMsg );        sqlite3_free( pszErrMsg );        poDS->SoftRollback();        return OGRERR_FAILURE;    }/* -------------------------------------------------------------------- *//*      Add the field to the OGRFeatureDefn.                            *//* -------------------------------------------------------------------- */    int iNewField;    poFeatureDefn->AddFieldDefn( &oField );    iNewField = poFeatureDefn->GetFieldCount() - 1;    panFieldOrdinals = (int *)         CPLRealloc(panFieldOrdinals, (iNewField+1) * sizeof(int) );    panFieldOrdinals[iNewField] = iNextOrdinal;    return OGRERR_NONE;}/************************************************************************//*                             SetFeature()                             *//************************************************************************/OGRErr OGRSQLiteTableLayer::SetFeature( OGRFeature *poFeature ){    CPLAssert( pszFIDColumn != NULL );        if( poFeature->GetFID() == OGRNullFID )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "SetFeature() with unset FID fails." );        return OGRERR_FAILURE;    }/* -------------------------------------------------------------------- *//*      Drop the record with this FID.                                  *//* -------------------------------------------------------------------- */    int rc;    char *pszErrMsg = NULL;    const char *pszSQL;    pszSQL =         CPLSPrintf( "DELETE FROM '%s' WHERE \"%s\" = %d",                     poFeatureDefn->GetName(),                     pszFIDColumn,                    poFeature->GetFID() );    CPLDebug( "OGR_SQLITE", "exec(%s)", pszSQL );        rc = sqlite3_exec( poDS->GetDB(), pszSQL,                       NULL, NULL, &pszErrMsg );        if( rc != SQLITE_OK )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Attempt to delete old feature with FID %d failed.\n%s",                   poFeature->GetFID(), pszErrMsg );        return OGRERR_FAILURE;    }    /* -------------------------------------------------------------------- *//*      Recreate the feature.                                           *//* -------------------------------------------------------------------- */    return CreateFeature( poFeature );}/************************************************************************//*                           CreateFeature()                            *//************************************************************************/OGRErr OGRSQLiteTableLayer::CreateFeature( OGRFeature *poFeature ){    std::string    oCommand;    std::string    oValues;    int            bNeedComma = FALSE;    ResetReading();/* -------------------------------------------------------------------- *//*      Form the INSERT command.                                        *//* -------------------------------------------------------------------- */    oCommand += CPLSPrintf( "INSERT INTO '%s' (", poFeatureDefn->GetName() );/* -------------------------------------------------------------------- *//*      Add FID if we have a cleartext FID column.                      *//* -------------------------------------------------------------------- */    if( pszFIDColumn != NULL // && !EQUAL(pszFIDColumn,"OGC_FID")         && poFeature->GetFID() != OGRNullFID )    {        oCommand += pszFIDColumn;        oValues += CPLSPrintf( "%d", poFeature->GetFID() );        bNeedComma = TRUE;    }/* -------------------------------------------------------------------- *//*      Add geometry.                                                   *//* -------------------------------------------------------------------- */    if( pszGeomColumn != NULL && poFeature->GetGeometryRef() != NULL )    {        char *pszWKT = NULL;        if( bNeedComma )        {            oCommand += ",";            oValues += ",";        }        oCommand += pszGeomColumn;        poFeature->GetGeometryRef()->exportToWkt( &pszWKT );        oValues += "'";        oValues += pszWKT;        oValues += "'";        CPLFree( pszWKT );        bNeedComma = TRUE;    }/* -------------------------------------------------------------------- *//*      Add field values.                                               *//* -------------------------------------------------------------------- */    int iField;    for( iField = 0; iField < poFeatureDefn->GetFieldCount(); iField++ )    {        const char *pszRawValue;        if( !poFeature->IsFieldSet( iField ) )            continue;        if( bNeedComma )        {            oCommand += ",";            oValues += ",";        }        oCommand += "'";        oCommand +=poFeatureDefn->GetFieldDefn(iField)->GetNameRef();        oCommand += "'";        pszRawValue = poFeature->GetFieldAsString( iField );        if( strchr( pszRawValue, '\'' ) != NULL )        {            char *pszEscapedValue =                 CPLEscapeString( pszRawValue, -1, CPLES_SQL );            oValues += "'";            oValues += pszEscapedValue;            oValues += "'";            CPLFree( pszEscapedValue );        }        else        {            oValues += "'";            oValues += pszRawValue;            oValues += "'";        }                    bNeedComma = TRUE;    }/* -------------------------------------------------------------------- *//*      Merge final command.                                            *//* -------------------------------------------------------------------- */    oCommand += ") VALUES (";    oCommand += oValues;    oCommand += ")";/* -------------------------------------------------------------------- *//*      Execute the insert.                                             *//* -------------------------------------------------------------------- */    int rc;    char *pszErrMsg = NULL;    CPLDebug( "OGR_SQLITE", "exec(%s)", oCommand.c_str() );    rc = sqlite3_exec( poDS->GetDB(), oCommand.c_str(),                        NULL, NULL, &pszErrMsg );    if( rc != SQLITE_OK )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "CreateFeature() failed: %s",                  pszErrMsg );        sqlite3_free( pszErrMsg );        return OGRERR_FAILURE;    }/* -------------------------------------------------------------------- *//*      We likely ought to consider fetching the rowid/fid and          *//*      putting it back in the feature.                                 *//* -------------------------------------------------------------------- */    // todo     return OGRERR_NONE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品三级| 99久精品国产| 香蕉加勒比综合久久| 国产精品久久久久一区二区三区共| 欧美精选在线播放| 91极品视觉盛宴| 91丨九色丨蝌蚪富婆spa| 顶级嫩模精品视频在线看| 国精品**一区二区三区在线蜜桃| 午夜免费久久看| 石原莉奈在线亚洲三区| 日韩制服丝袜av| 日本特黄久久久高潮| 蜜臀久久久99精品久久久久久| 亚洲午夜久久久久| 午夜精品福利一区二区三区av| 亚洲永久免费视频| 日韩av午夜在线观看| 日韩不卡一二三区| 国产精品羞羞答答xxdd| 成人午夜在线视频| 在线看日本不卡| 91精品在线观看入口| 日韩亚洲电影在线| 国产欧美一区二区精品忘忧草 | 欧美日韩一卡二卡| 欧美一区二区三区白人| 国产欧美精品日韩区二区麻豆天美| 国产日韩欧美亚洲| 亚洲国产精品一区二区久久 | 亚洲丝袜自拍清纯另类| 亚洲成人在线免费| 激情欧美日韩一区二区| 99视频一区二区| 日韩一级黄色大片| 亚洲人吸女人奶水| 精品一区二区三区在线观看| 风流少妇一区二区| 91精品国产免费| 国产精品久久一级| 久久精品国产精品亚洲精品| 国产 日韩 欧美大片| 欧美一区二区在线播放| 国产精品成人网| 国产一区二区不卡在线| 欧美日韩午夜在线视频| 国产精品久久久久久久久晋中| 丝瓜av网站精品一区二区| 91麻豆国产香蕉久久精品| 久久精品在线观看| 麻豆精品一区二区| 国产综合色精品一区二区三区| 午夜视频在线观看一区二区三区| 国产成人精品影院| 欧美国产精品久久| 色综合天天综合网国产成人综合天| 自拍av一区二区三区| 国产成人超碰人人澡人人澡| 日韩一区二区高清| 美国毛片一区二区三区| 在线成人av网站| 亚洲图片欧美一区| 色成人在线视频| 欧美激情在线看| 精品午夜久久福利影院| 日韩免费看网站| 韩国成人在线视频| 91精品在线麻豆| 蜜臀va亚洲va欧美va天堂| 欧美精品一二三| 亚洲国产日韩一级| 日韩欧美一区在线| 高清不卡一区二区| 日韩欧美一区电影| 国产91精品一区二区麻豆亚洲| 精品精品国产高清a毛片牛牛 | 亚洲欧洲一区二区三区| 不卡的av在线| 亚洲另类中文字| 欧美日韩精品专区| 日韩精品五月天| 久久亚洲欧美国产精品乐播| 国产一区二区三区av电影| 中文字幕免费一区| 在线精品亚洲一区二区不卡| 五月婷婷激情综合| 91精品国产aⅴ一区二区| 精品一区二区久久久| 久久久久久久久一| 色网综合在线观看| 国产成人精品一区二 | 国产美女视频91| 一二三四社区欧美黄| 国产亚洲福利社区一区| 欧美一区二区视频观看视频| 91麻豆国产在线观看| 国产成人av电影在线| 国产专区综合网| 一区二区三区电影在线播| 亚洲精品在线免费观看视频| 欧美在线一二三四区| 欧美丰满高潮xxxx喷水动漫| 日韩亚洲欧美综合| 91网上在线视频| 精品一区二区三区在线播放视频| 亚洲人成网站精品片在线观看| 精品区一区二区| 欧美日韩久久久久久| 99国产精品视频免费观看| 国产制服丝袜一区| 石原莉奈在线亚洲二区| 一区二区在线观看av| 中文字幕中文字幕在线一区| 久久久久久久久久电影| 欧美tk—视频vk| 精品国产一区二区亚洲人成毛片| 91精品一区二区三区久久久久久 | 精品欧美一区二区三区精品久久| 欧美日韩一级大片网址| 91国偷自产一区二区使用方法| 成人丝袜高跟foot| 高清不卡一区二区在线| 成人午夜在线播放| 97se狠狠狠综合亚洲狠狠| 成人免费毛片高清视频| 国产成人av电影免费在线观看| 国产成人午夜电影网| 成人免费高清在线| 91浏览器入口在线观看| 色999日韩国产欧美一区二区| 91免费国产在线| 精品视频在线视频| 久久综合网色—综合色88| 国产亚洲成av人在线观看导航 | 亚洲午夜在线视频| 看国产成人h片视频| 懂色av一区二区三区蜜臀 | 136国产福利精品导航| 亚洲国产精品人人做人人爽| 五月天网站亚洲| 成人午夜视频网站| 7777精品伊人久久久大香线蕉的 | 蜜桃av噜噜一区| 一本大道av伊人久久综合| 欧美一级生活片| 亚洲视频一二三区| 久久se这里有精品| 欧洲国内综合视频| 国产精品盗摄一区二区三区| 午夜伦欧美伦电影理论片| 激情图区综合网| 欧美在线免费视屏| 国产精品久久免费看| 久久97超碰国产精品超碰| 在线观看日产精品| 日本一区二区成人在线| 轻轻草成人在线| 欧美性猛片aaaaaaa做受| 国产精品成人一区二区三区夜夜夜| 无码av中文一区二区三区桃花岛| 国产精品99久久久久久久女警 | 日韩一级高清毛片| 亚洲人成伊人成综合网小说| 九九精品一区二区| 91精品1区2区| 国产精品成人免费在线| 丁香婷婷综合激情五月色| 久久尤物电影视频在线观看| 亚洲国产精品综合小说图片区| 丁香亚洲综合激情啪啪综合| 精品国产在天天线2019| 免费成人美女在线观看| 91免费国产在线观看| 国产精品素人视频| 精品一区二区久久| 中文在线免费一区三区高中清不卡| 久久99精品久久久| 久久久综合视频| 成人性生交大合| 国产精品毛片久久久久久久| 成人国产精品免费观看动漫 | 顶级嫩模精品视频在线看| 欧美高清一级片在线观看| 99久久婷婷国产综合精品| 一区二区免费看| 91美女片黄在线| 日韩专区欧美专区| 欧美一区二区三区日韩视频| 免费在线观看视频一区| 久久久www成人免费毛片麻豆| 波多野结衣亚洲| 亚洲成av人影院| 国产欧美一区二区精品秋霞影院 | 91小视频在线观看| 亚洲综合成人在线视频| 日韩欧美的一区二区| av一区二区不卡| 国产在线一区二区| 亚洲同性gay激情无套| 欧美成人女星排行榜|