@Override
    public List<DataRow> select(DataRow parameters) {
        String statement = "SELECT * FROM " + parameters.getTableName();
        if(!parameters.isEmpty())
        {
            statement += " WHERE ";
        }
        boolean isFirst = true;
        for(DataCell cell : parameters.row)
        {
            if(isFirst)
            {
                isFirst = false;
                statement += cell.getName() + " = '" + cell.getValue() + "'";
            } else {
                statement += " AND " + cell.getName() + " = '" + cell.getValue() + "'";
            }
        }
        List<DataRow> result = new LinkedList<>();
        try
        {
            Statement stat = dbConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            ResultSet rs = stat.executeQuery(statement);
            rs.beforeFirst();
            while(rs.next())
            {
                DataRow newRow = new DataRow();
                newRow.setTableName(parameters.getTableName());
                ResultSetMetaData rsmd = rs.getMetaData();
                int columnCount = rsmd.getColumnCount();
                
                for(int i = 1; i <= columnCount; i++)
                {
                    newRow.addAttribute(rsmd.getColumnName(i), rs.getString(i));
                }
                newRow.setName(newRow.getAttribute("name").getValue());
                result.add(newRow);
            }
            return result;
        } catch(Exception e) {
            ErrorDialog errorDialog = new ErrorDialog(true, "Nastąpił błąd podczas wykonywania select w bazie danych:\n" + e.getMessage(), "SqlServerLocalDatabaseConnector", "select", "parameters, statement");
            errorDialog.setVisible(true);
            return null;
        }
    }