Tour Trial Pricing Docs Support |
Fast, easy and secure data access for your apps.
 

Getting started with Data Abstract is easy – and gets only simpler from there.

.NET Cocoa Java Delphi JavaScript

Windows. WinRT. Windows Phone. Heck, even cross-platform Mono and Xamarin.
Data Abstract gives you easy access to your data.

C# Oxygene Swift Visual Basic Iodine

        var rda = new LinqRemoteDataAdapter("https://sample.remobjects.com/bin");
        var table = from c in rda.GetTable<Clients>() where c.ClientName.EndsWith("A");
        foreach (Clients c in table)
        {
            // work with your data
        }
									

        var lRda := new LinqRemoteDataAdapter("https://sample.remobjects.com/bin");
        for each from c in lRda.GetTable<Clients> where c.ClientName.EndsWith('A') do begin 
            // work with your data
        end;
									

        let rda = LinqRemoteDataAdapter("https://sample.remobjects.com/bin")
        let table = rda.GetTable<Clients>().Where({return !$0.ClientName.EndsWith("A")})
        for c in table {
            // work with your data
        }
									
(Use Swift on .NET with our free Silver Compiler).

        Dim rda = New LinqRemoteDataAdapter("https://sample.remobjects.com/bin")
        Dim table = From c In rda.GetTable(Of Clients)() Where c.ClientName.EndsWith("A")
        For Each c As Clients In table
          ' work with your data
        Next 
									

        var rda = new LinqRemoteDataAdapter("https://sample.remobjects.com/bin");
        var table = rda.GetTable<Clients>().Where( (c) -> c.ClientName.EndsWith("A") );
        for (Clients c : table)
        {
            // work with your data
        }
									

Whether you develop for Mac, iOS, watchOS or tvOS. Whether you use Swift, Objective-C or Elements.
Access to your data has never been easier.

Swift Objective-C Oxygene RemObjects C# Iodine

        let url = NSURL(string: "https://sample.remobjects.com/bin")
        let rda = DARemoteDataAdapter(targetURL: url!)
        rda.beginGetDataTable("Clients", withSQL: "SELECT * FROM Clients where ClientName LIKE '%A'") { table in
            // work with your data
        }
									

        NSURL *url = [NSURL URLWithstring:@"https://sample.remobjects.com/bin"];
        DARemoteDataAdapter *rda = [DARemoteDataAdapter adapterWithTargetURL:url];
        [rda beginGetDataTable:@"Clients" 
                       withSQL: @"SELECT * FROM Clients where ClientName LIKE '%A'")
                startWithBlock: ^(DADataTable *table) {
            // work with your data
        }];
									

        var lUrl := NSURL.URLWithstring('https://sample.remobjects.com/bin');
        var lRda := new DARemoteDataAdapter withTargetURL(lUrl);
        lRda.beginGetDataTable('Clients') 
            withSQL("SELECT * FROM Clients where ClientName LIKE '%A'")
            startWithBlock( (table) -> begin
            // work with your data
        end);
									

        var url = NSURL.URLWithstring("https://sample.remobjects.com/bin");
        var rda = new DARemoteDataAdapter withTargetURL(url);
        rda.beginGetDataTable("Clients") 
            withSQL("SELECT * FROM Clients where ClientName LIKE '%A'")
            startWithBlock( (table) => {
            // work with your data
        });
									

        var url = NSURL.URLWithstring("https://sample.remobjects.com/bin");
        var rda = new DARemoteDataAdapter withTargetURL(url);
        rda.beginGetDataTable("Clients") 
            withSQL("SELECT * FROM Clients where ClientName LIKE '%A'")
            startWithBlock( (table) -> {
            // work with your data
        });
									

Target Android, or any other system running on Java.
With Data Abstract, your data is only a few lines of code away.

Java Oxygene Swift RemObjects C#

        URI url = URI.create( "https://sample.remobjects.com/bin");
        RemoteDataAdapter rda = new RemoteDataAdapter(url);
        DataTable table = new DataTable("Clients");
        rda.fillWithSqlAsync(table, "SELECT * FROM Clients where ClientName LIKE '%A'", null, 
                             new FillRequestTask.Callback() {
            @Override
            public void completed(final FillRequestTask aTask, Object aState) {
                // work with your data
            }
        }).execute();
									

        var lUrl := URI.create('https://sample.remobjects.com/bin');
        var lRda := new RemoteDataAdapter(lUrl);
        var lTable := new DataTable('Clients');
        lRda.fillWithSqlAsync(lTable, "SELECT * FROM Clients where ClientName LIKE '%A'", nil, (aTask: FillRequestTask; aState: Object) -> begin
          // work with your data
        end)).execute();
									

        let url = URI.create("https://sample.remobjects.com/bin")
        let rda = RemoteDataAdapter(url)
        let table = DataTable("Clients")
        rda.fillWithSqlAsync(table, "SELECT * FROM Clients where ClientName LIKE '%A'", nil, { (aTask, aState) in
          // work with your data
        }).execute()
									
(Use Swift on Java and Android with our free Silver Compiler).

        var url = URI.create("https://sample.remobjects.com/bin")
        var rda = new RemoteDataAdapter(url);
        var table = new DataTable("Clients");
        rda.fillWithSqlAsync(table, "SELECT * FROM Clients where ClientName LIKE '%A'", nil, (aTask, aState) => {
          // work with your data
        }).execute()
									

Safely connect to your database with Data Abstract.
From VCL and FireMonkey Apps on Windows, Mac, Android and iOS.

Delphi Language C++Builder

        rda := TDARemoteDataAdapter.Create(nil);
        rda.TargetURL: = 'https://sample.remobjects.com/bin';
        table := TDAMemDataTable.Create(nil);
        rda.FillWithDASql(table,'SELECT * FROM Clients where ClientName LIKE ''%A''', nil);
        // work with your data
        table.Free;
        rda.Free;									
                  

        TDARemoteDataAdapter *rda = new TDARemoteDataAdapter(NULL);
        TDAMemDataTable *table = new TDAMemDataTable(NULL);
        rda->TargetURL = "https://sample.remobjects.com/bin";
        rda->FillWithDASql(table,"SELECT * FROM Clients where ClientName LIKE '%A'",NULL);
         // work with your data
									

Your Data. In the Browser.
It's never been easier than with Data Abstract.

JavaScript

        var rda = new RemObjects.DataAbstract.RemoteDataAdapter(serviceUrl, "DataService");
        var table = new RemObjects.DataAbstract.DataTable("clients");
        adapter.getSQLData(table, "SELECT * FROM Clients where ClientName LIKE '%A'", function() {
            // work with your data
        }, RemObjects.UTIL.showError);
                  
Case Studies

Data Abstract makes it easy to build database-driven applications for all major platforms.

Benefits of Data Abstract

Data Abstract uses a multi-tier approach to data access, making data access easy, fast and secure for the modern online world.

On the server tier, you have full control over how data is accessed and modified, making sure that client applications cannot bypass your rules or leave data in an inconsistent state. And all of that without having to write and maintain a server application yourself.

In your client application, Data Abstract provides a simple yet flexible API that makes it easy to request data, modify it, and send it back to the server – right away or later on. All without messing with HTTP requests, REST or similar low-level implementation details.

Data Abstract lets you use briefcase files to make data available in your local app, even when the user is not connected to the network. You can even let the user make changes to the data, and upload them at a later time.

Data Abstract also completely abstracts away the nitty gritty details of working with various database back-ends. While you can get your hands dirty and for example write custom SQL queries on the server, your client apps will stay completely database agnostic.


Data Abstract for
.NET

Data Abstract for
Cocoa

Data Abstract for
Java & Android

Data Abstract for
JavaScript

Data Abstract for
Delphi

Data Abstract makes it easy to access data from your apps, no matter what platform you are targeting, or what development tool you are using.

To achieve that, Data Abstract was designed fresh for each of the five development platforms it supports – .NET, Cocoa, Java, JavaScript and Delphi.

All editions of Data Abstract follow a common design pattern around a few core classes such as a Remote Data Adapter and Data Tables, but the infrastructure is implemented natively on each platform, so you don't have to deal with .NET-isms when working in Xcode, or with Java-isms when working on .NET, and so on.

And it goes without saying that no matter what platform(s) you write client apps for, they can all seamlessly communicate with the same server.

What's new in Version 9?    |    Forums