diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2023-08-14 19:45:36 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2023-08-14 19:45:36 +0200 |
commit | bfa452a375ea0a0a3f95304a69186936567e5263 (patch) | |
tree | aade062a143c1afcc4ea06ee27905ffc34a9217b /src/sql/xbdelete.cpp | |
parent | dd70ff8bf32c2d7ed365004b1770058265db1978 (diff) |
New upstream version 4.1.4
Diffstat (limited to 'src/sql/xbdelete.cpp')
-rwxr-xr-x | src/sql/xbdelete.cpp | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/src/sql/xbdelete.cpp b/src/sql/xbdelete.cpp deleted file mode 100755 index 82b4937..0000000 --- a/src/sql/xbdelete.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* xbdelete.cpp - -XBase64 Software Library - -Copyright (c) 1997,2003,2014,2022 Gary A Kunkel - -The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. - -Email Contact: - - XDB-devel@lists.sourceforge.net - XDB-users@lists.sourceforge.net - -*/ - -#include "xbase.h" - -#ifdef XB_SQL_SUPPORT - -namespace xb{ - - -/***********************************************************************/ -xbInt16 xbSql::SqlDelete( const xbString &sCmdLine ){ - - // expected format: - // DELETE FROM tablename.DBF [WHERE expression] - - - xbInt16 iRc = 0; - xbInt16 iRc2 = 0; - xbInt16 iErrorStop = 0; - xbString sTableName = ""; - xbUInt32 ulPos = 0; - xbString sCmd = sCmdLine; - xbString sNode = ""; - xbString sFilter; - xbInt16 iDelOpt = 0; - - xbString sTable; - xbDbf * dbf = NULL; - - try{ - -// std::cout << "xbSql::SqlDelete( " << sCmdLine.Str() << " )\n"; - - sNode.ExtractElement( sCmd, ' ', 1, 0 ); - sNode.Trim(); - sNode.ToUpperCase(); - if( sNode == "UNDELETE" ) - iDelOpt = 1; - - // pull off the action - sNode.ExtractElement( sCmd, ' ', 2, 0 ); - sNode.Trim(); - sNode.ToUpperCase(); - if( sNode != "FROM" ){ - iErrorStop = 100; - iRc = XB_SYNTAX_ERROR; - throw iRc; - } - - // pull off the table name - sTable.ExtractElement( sCmd, ' ', 3, 0 ); - sTable.Trim(); - - // pull off the "WHERE" statement if it exists - sNode.ExtractElement( sCmd, ' ', 4, 0 ); - sNode.Trim(); - sNode.ToUpperCase(); - if( sNode == "WHERE" ){ - ulPos = sCmd.Pos( "WHERE" ); - sFilter = sCmd; - sFilter.Ltrunc( ulPos + 5 ); - } - - // if not open, attempt to open it - dbf = xbase->GetDbfPtr( sTable ); - if( !dbf ){ - if(( iRc = xbase->OpenHighestVersion( sTable, "", &dbf )) != XB_NO_ERROR ){ - iErrorStop = 110; - throw iRc; - } - } - if( !dbf ){ - iErrorStop = 120; - iRc = XB_DBF_FILE_NOT_OPEN; - throw iRc; - } - - if( sFilter == "" ){ - if(( iRc = dbf->DeleteAll( iDelOpt )) != XB_NO_ERROR ){ - iErrorStop = 130; - throw iRc; - } - } else { - - xbFilter f( dbf ); - if(( iRc = f.Set( sFilter )) != XB_NO_ERROR ){ - iErrorStop = 150; - throw iRc; - } - - iRc2 = f.GetFirstRecord( XB_ALL_RECS ); - while( iRc2 == XB_NO_ERROR ){ - if( iDelOpt == 0 ){ - if( !dbf->RecordDeleted()){ - if(( iRc = dbf->DeleteRecord()) != XB_NO_ERROR ){ - iErrorStop = 160; - throw iRc; - } - if(( iRc = dbf->Commit()) != XB_NO_ERROR ){ - iErrorStop = 170; - throw iRc; - } - } - - } else { // undelete - if( dbf->RecordDeleted()){ - if(( iRc = dbf->UndeleteRecord()) != XB_NO_ERROR ){ - iErrorStop = 180; - throw iRc; - } - if(( iRc = dbf->Commit()) != XB_NO_ERROR ){ - iErrorStop = 190; - throw iRc; - } - } - } - iRc2 = f.GetNextRecord(); - } - } - } - - catch (xbInt16 iRc ){ - xbString sMsg; - sMsg.Sprintf( "xbSql::SqlDropTable() Exception Caught. Error Stop = [%d] rc = [%d] table = [%s]", iErrorStop, iRc, sTableName.Str() ); - xbase->WriteLogMessage( sMsg.Str() ); - xbase->WriteLogMessage( GetErrorMessage( iRc )); - } - - return iRc; -} - -/***********************************************************************/ -} /* namespace */ -#endif /* XB_SQL_SUPPORT */ - |