diff --git a/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php b/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php
index 808a037079efa6cb1ce236282cef546573eba52b..702b9fe898d17fb7f678b34a5075a52cad1c29a7 100644
--- a/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php
+++ b/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php
@@ -14,6 +14,8 @@ namespace TYPO3\CMS\Install\Updates;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -35,24 +37,27 @@ class TableFlexFormToTtContentFieldsUpdate extends AbstractUpdate
      */
     public function checkForUpdate(&$description)
     {
-        $flexFormCount = $this->getDatabaseConnection()->exec_SELECTcountRows(
-            'uid',
-            'tt_content',
-            'CType=\'table\' AND pi_flexform IS NOT NULL AND deleted = 0'
-        );
-
-        if (
-            $this->isWizardDone() || $flexFormCount === 0
-            || ExtensionManagementUtility::isLoaded('css_styled_content')
-        ) {
+        if ($this->isWizardDone() || ExtensionManagementUtility::isLoaded('css_styled_content')) {
             return false;
         }
 
-        $description = 'The extension "frontend" uses regular database fields in the tt_content table ' .
-            'for the CType "table". Before this was a FlexForm.<br /><br />' .
-            'This update wizard migrates these FlexForms to regular database fields.';
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $flexFormCount = $queryBuilder->count('uid')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('table')),
+                $queryBuilder->expr()->isNotNull('pi_flexform')
+            )
+            ->execute()->fetchColumn(0);
 
-        return true;
+        if ($flexFormCount) {
+            $description = 'The extension "frontend" uses regular database fields in the tt_content table '
+                . 'for the CType "table". Before this was a FlexForm.<br /><br />'
+                . 'This update wizard migrates these FlexForms to regular database fields.';
+        }
+
+        return (bool)$flexFormCount;
     }
 
     /**
@@ -64,37 +69,33 @@ class TableFlexFormToTtContentFieldsUpdate extends AbstractUpdate
      */
     public function performUpdate(array &$databaseQueries, &$customMessages)
     {
-        $databaseConnection = $this->getDatabaseConnection();
-
-        $databaseResult = $databaseConnection->exec_SELECTquery(
-            'uid, pi_flexform',
-            'tt_content',
-            'CType=\'table\' AND pi_flexform IS NOT NULL AND deleted = 0'
-        );
-
-        while ($tableRecord = $databaseConnection->sql_fetch_assoc($databaseResult)) {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'pi_flexform')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('Ctype', $queryBuilder->createNamedParameter('table')),
+                $queryBuilder->expr()->isNotNull('pi_flexform')
+            )
+            ->execute();
+        while ($tableRecord = $statement->fetch()) {
             $flexForm = $this->initializeFlexForm($tableRecord['pi_flexform']);
-
             if (is_array($flexForm)) {
                 $fields = $this->mapFieldsFromFlexForm($flexForm);
-
-                // Set pi_flexform to NULL
-                $fields['pi_flexform'] = null;
-
-                $databaseConnection->exec_UPDATEquery(
-                    'tt_content',
-                    'uid=' . (int)$tableRecord['uid'],
-                    $fields
-                );
-
-                $databaseQueries[] = $databaseConnection->debug_lastBuiltQuery;
+                $queryBuilder = $connection->createQueryBuilder();
+                $queryBuilder->update('tt_content')
+                    ->where($queryBuilder->expr()->eq('uid', (int)$tableRecord['uid']))
+                    ->set('pi_flexform', 'null', false);
+                foreach ($fields as $identifier => $value) {
+                    $queryBuilder->set($identifier, $queryBuilder->quote($value), false);
+                }
+                $databaseQueries[] = $queryBuilder->getSQL();
+                $queryBuilder->execute();
             }
         }
 
-        $databaseConnection->sql_free_result($databaseResult);
-
         $this->markWizardAsDone();
-
         return true;
     }