jRDC2 Tutorial

Alexander Stolte

Expert
Licensed User
Longtime User
Da ich sehr große Probleme hatte mit der Konfiguration und ich nach einem Jahr immer noch weiß, wie man ihn aufsetzt, mache ich mal ein Tutorial darüber.

Erstmal ein Dankeschön an 2 User die mir sehr geholfen haben:
@DonManfred und @Enrique Gonzalez R

Ich nutze für dieses Tutorial einen Root Server, der als mein kleiner Testserver in einem Rechenzentrum steht. Auf dem Root Server ist ein Windows-Server 2012R2 Installiert.

Nutzen tue ich einen MS SQL-Server.

Ich spreche über diese 2 englischen Tutorials:
1. https://www.b4x.com/android/forum/threads/class-jrdc2-b4j-implementation-of-rdc-remote-database-connector.61801/
2. https://www.b4x.com/android/forum/threads/remote-database-connector-rdc-connect-to-any-remote-db.31540/#content

Es empfiehlt sich dennoch zuerst mit dem 2. Tutorial anzufangen um zu verstehen wie die jRDC2 Funktioniert aus dem 1. Tutorial.

Jetzt fange ich aber mal an mit diesem Tutorial.

Als erstes brauchen wir den richtigen Treiber für unsere MS SQL, dass gleiche benötigen wir auch bei einem MY-SQL Server und weitere(wenn wir diese nutzen) Da ich einen MS-SQL einsetze benötige ich nur für diesen Typ den Treiber.

Die rede ist von einem:
JDBC-Treiber

Herunterladen für:
MS-SQL: https://www.microsoft.com/de-DE/download/details.aspx?id=11774
MY-SQL: https://dev.mysql.com/downloads/connector/j/5.1.html

Wenn wir den passenden heruntergeladen haben, müssen wir das Setup ausführen, am besten nehmt ihr diesen Pfad: C:\Program Files und lasst das Setup alles dort entpacken.

Wenn das soweit erledigt ist, benötigen wir die Umgebung von B4J. Diese könnt Ihr euch kostenlos von der Webseite herunterladen und Installieren. Ist B4J installiert, brauchen wir eine Zip datei namens: jRDC2.zip diese könnt Ihr euch hier downloaden: https://www.b4x.com/android/forum/threads/class-jrdc2-b4j-implementation-of-rdc-remote-database-connector.61801/

Entpackt diese und öffnet die: jRDC.b4j

ACHTUNG
Um Fehler besser zu finden, empfehle ich B4J auf dem Root Server zu installieren, dort kann man die Applikation dann im Debug Modus starten.

In den Additional Files Ordner den wir bei der Installation von B4J festgelegt haben, müssen wir noch den Treiber ablegen. Dazu geht unter den Pfad wo ihr den Treiber installiert habt und sucht diese Jar-Datei: sqljdbc42.jar die "42" steht für die Version des Treibers, das heißt wenn es später die Version 43 des Treibers gibt, steht da eine 43. Diese Datei packen wir nun in den besagten Ordner. Wenn das getan ist müssen wir in dem geöffneten B4J Projekt darauf verweisen:


B4X:
#AdditionalJar: sqljdbc42.jar

Jetzt kommt der spannende Teil

in dem Projekte Ordner ist ein Ordner namens "Files" diesen öffnen wir und sehen eine Datei namens "config.properties" diesen öffnen wir mit einem beliebigen Editor.

Beispiel unter einem MS SQL-Server
unter #DATABASE CONFIGURATION geben wir folgendes an bei:
DriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver

JdbcUrl=jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=mydatabase;portNumber=1433
-localhost: da die b4j Applikation auf dem gleichen Server läuft wie meine Datenbank, kann ich diesen mit localhost erreichen
-SQLEXPRESS: wenn Ihr die Pro Version habt steht dort was anderes, was dahin muss könnt ihr hier sehen.
sqlexpress.PNG

-databaseName: ist der Name euer Datenbank
-portNumber: ist der Standard TCP/IP Port von MS SQL.

-User: der Datenbank user, der alles durchführen soll
-Password: das Passwort von denjenigen User
-ServerPort: der Port womit unsere b4j Applikation erreichbar sein soll von außen, natürlich in der Firewall freigeben

#SQL COMMANDS
in dem beispiel hier machen wir nur eine kleine abfrage.

B4X:
sql.komandoname_1=select * from table_1 WHERE column_1='kriterium_1'

anschließend speichern und schließen.

jetzt kommen wir zur
Android Applikation

wir machen uns ein neues Projekt in b4a.

nun brauchen wir eine klasse namens "DBRequestManager" diese bekommen wir hier

und importieren diese Klasse.

dazu brauchen wir noch folgende Bibliotheken:
-HttpUtils2
-RandomAccessFile

fügen das ein:
B4X:
Sub Process_Globals

    Dim reqManager As DBRequestManager
    Type DBResult (Tag As Object, Columns As Map, Rows As List)
    Type DBCommand (Name As String, Parameters() As Object)
End Sub

wenn wir die App Starten:
B4X:
Sub Activity_Create(FirstTime As Boolean)
      If FirstTime Then
        reqManager.Initialize(Me, "http://ipfromrootserver:portfromb4jprojekt/rdc")
    End If
End Sub

wenn wir noch einen Button einfügen:
B4X:
Sub btn_select_Click
  Dim cmd As DBCommand
    cmd.Initialize
    cmd.Name = "komandoname_1"
    reqManager.ExecuteQuery(cmd, 0, Null) 'NULL
End If
End Sub

Wenn der job zuende ist:

B4X:
Sub JobDone(Job As HttpJob)
    If Job.Success = False Then
        Log("Error: " & Job.ErrorMessage)
    Else
        If Job.JobName = "DBRequest" Then
            reqManager.HandleJobAsync(Job, "ReqManager")
        End If
    End If
    Job.Release
End Sub

Sub ReqManager_Result(result As DBResult)
    reqManager.PrintTable(result)

    Dim row() As Object = result.Rows.Get(0)
    ToastMessageShow(row(0) & " " &  row(1), True)
End Sub

Wir kompilieren nun die jRDC mit B4J auf dem Server.

anschließend kompilieren wir das B4A Projekt auf einem Handy.

wenn wir nun alles richtig konfiguriert haben und die passenden Daten in der Datenbank stehen haben, sollte uns jetzt ein Ergebnis angezeigt werden in der App. Und im debugger von dem B4J Projekt sollte folgendes stehen:
B4X:
Command: query: komandoname_1, took: 0ms, client=ipadress

 
Last edited:
Top