public void createETables(Connection cCon, Connection eCon) throws SQLException {
        //---------CREATE ETABLES--------------
        DatabaseMetaData md = cCon.getMetaData();
        Statement eStatement = eCon.createStatement();
        Statement cStatement = cCon.createStatement();

        ResultSet tables = md.getTables(null, null, "%", null);
        while (tables.next()) {
            eStatement.executeUpdate("CREATE TABLE e" + tables.getString("TABLE_NAME") + "(\n" +
                    "eTuple_" + tables.getString("TABLE_NAME") + " varchar(300));");
            ResultSet newColumns = md.getColumns(null, null, tables.getString("TABLE_NAME"), null);
            while (newColumns.next()) {
                eStatement.executeUpdate("ALTER TABLE e" + tables.getString("TABLE_NAME") +
                        " ADD COLUMN e" + newColumns.getString("COLUMN_NAME") + " int;");
            }
            newColumns.close();
            //--------INSERT EVALUES + MAPPING----------

            // Create a new Object Mapping
            Mapping map = new Mapping();
            ResultSet clearData = cStatement.executeQuery(
                    "SELECT * FROM " + tables.getString("TABLE_NAME") + ";");

            // Start mapping all the values from the Clear Database to Encrypted Database
            //TODO: encrypt String etuple
            while (clearData.next()) {
                ResultSet getColumns = md.getColumns(null, null, tables.getString("TABLE_NAME"), null);
                StringBuilder etupleBuilder = new StringBuilder();
                String etuple = null;
                StringBuilder insertSQLBuilder = new StringBuilder();
                String SQLInsert = null;
                while (getColumns.next()) {
                    etupleBuilder.append(clearData.getString(getColumns.getString("COLUMN_NAME")));
                    etupleBuilder.append("-");
                    if (getColumns.getInt("DATA_TYPE") == 12) { //VARCHAR SQL COLUMN TYPES
                        insertSQLBuilder.append(",\"" + map.identificationFunction(map.BucketSize(100 * 25), map.String2Integer(clearData.getString(getColumns.getString("COLUMN_NAME")))) + "\"");
                    } else if (getColumns.getInt("DATA_TYPE") == 4) { //INTEGER SQL COLUMN TYPES

                        //Find maximum values from numeric column - to determine number of buckets
                        Statement state = cCon.createStatement();
                        ResultSet max = state.executeQuery("SELECT MAX(" + getColumns.getString("COLUMN_NAME") + ") FROM " + tables.getString("TABLE_NAME")+ ";");
                        int maximum = 0;
                        if (max.next()) {
                            maximum = max.getInt("MAX(" + getColumns.getString("COLUMN_NAME") + ")");
                        }
                        insertSQLBuilder.append("," + map.identificationFunction(map.BucketSize(maximum), clearData.getInt(getColumns.getString("COLUMN_NAME"))));
                        max.close();
                        state.close();
                    } else if (getColumns.getInt("DATA_TYPE") == 93) { //TIMESTAMP SQL COLUMN TYPES
                        insertSQLBuilder.append(",\"" + map.identificationFunction(map.BucketSize(100 * 25), map.String2Integer(clearData.getString(getColumns.getString("COLUMN_NAME")))) + "\"");
                    }

                }
                insertSQLBuilder.append(");");
                etuple = new String(etupleBuilder.substring(0,etupleBuilder.length()-1));
                insertSQLBuilder.insert(0, "INSERT INTO e" + tables.getString("TABLE_NAME") +
                        " VALUES (\"" + etuple + "\"");
                SQLInsert = new String(insertSQLBuilder.toString());
                eStatement.executeUpdate(SQLInsert);
                getColumns.close();
            }
            clearData.close();
        }
        tables.close();
        cStatement.close();
        eStatement.close();
    }