Startseite › Foren › Deutsches LiveCode-Forum › MySQL Verbindung mit der Handy APP ohne Erfolg
Schlagwörter: MySql, Verbindung
- Dieses Thema hat 11 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren von Klaus Major.
-
AutorBeiträge
-
-
Dezember 8, 2018 um 13:40 Uhr #9164
Hallo zusammen.
Ich bin neu hier und in LiveCode und habe mal als erstes eine kleine App für die Verbindung mit meiner MySQL Datenbank auf meinem Webhoster geschrieben bzw. das Tutorial für meine Zwecke umgeschrieben.
Der externe Zugriff ist erlaubt und bereits freigegeben. Für die Standalone APP habe ich unter Permissons den Zugriff aufs Internet und Write Externen Storage aktiviert (unds auch alles andere). Minimum Android Version 4.1.
Unter der LiveCode IDE funktioniert der Zugriff problemlos. Mit der App erhalte ich nicht mal eine Rückmeldung (answ error / info) ob die Verbindung hergestellt werden konnte oder eben nicht.
Um zu testen ob die App ins Internet kommt, habe ich zu Testzwecken auch einen Webbrowser zum Stack hinzugefügt. Das klappt, also gehe ich davon aus das die App grundsätzlich die benötigten Rechte hat.
Nun meine Frage. Wer hätte das Gedacht ;-). Was mache ich falsch bzw. wo muss ich eventuell noch Einstellungen vornehmen, damit ich auch übers Handy (meines hat Android 6.0) auf die Datenbank zugreifen kann?!
Danke im vorraus für Eure hoffentlich zahlreichen Tritte in den Allerwertesten! 😉
MfG
Andreas
-
Dezember 8, 2018 um 13:56 Uhr #9166
Hi Andreas,
willkommen im Forum!
Ein paar Fragen:
Community Version oder Livecode Indy?
Es gibt keine Fehlermeldung?
Aber Du hast doch eine eingebaut „if the result…“ und so?
Kannst Du bitte mal Dein Verbindungsskript hier posten? Ohne PWD natürlich!Gruß
Klaus
-
Dezember 8, 2018 um 14:05 Uhr #9168
Community Version in der Version 9.0.2, muss das erstmal testen…
Aber Du hast doch eine eingebaut „if the result…“ und so?
Ja, hab ich Siehe unten. Der gesamte Code funktioniert in der IDE unter Windows 10 wunderbar, nur eben nicht auf dem Handy. Alles unwichtige habe ich mal aus dem Code gelöscht, damit das hier nicht zu Verwirrungen führt. Des Weiteren habe ich auch eine APP direkt mit dem LiveCode MySQL Tutorial unverändert erstellt und aufs Handy geladen, leider gleiches Ergebnis. In der IDE Funktioniert es als APP auf dem Handy nicht!
-- use a global variable to hold the connection ID so other scripts can use it global gConnectionID global dbServ global dbName global dbUser global dbPass command OpenMySQL ## Zugangsdaten kommen aus Textfeldern... put field "dbServ" into dbServ put field "dbName" into dbName put field "dbUser" into dbUser put field "dbPass" into dbPass ## Bis hierhin, kein Problem answer info dbServ & cr & dbName & cr & dbUser & cr & dbPass -- connect to the database put revOpenDatabase("mysql", dbServ, dbName, dbUser, dbPass) into tResult -- check if it worked and display an error message if it didn't -- & set the connection ID global ## Leider keinerlei Rückmeldungen obwohl es hier steht... if tResult is a number then put tResult into gConnectionID answer info "Connected to the database." & cr & "Connection ID = " & gConnectionID else put empty into gConnectionID answer error "Unable to connect to the database:" & cr & tResult end if end OpenMySQL on hiliteChanged put the hilitedItemName of me into navBar if navBar = "option" then show group "Settings" else hide group "Settings" end if if navBar = "members" then show group "grdUser" put "Anwesenheit" into field "navText" ## Datenbank öffnen OpenMySQL if gConnectionID is an integer then ## Query the database for data put revQueryDatabase(gConnectionID, "SELECT LastLogInDate, UserName FROM Members WHERE PKID NOT LIKE '1' AND IsActive Like '-1' AND LID NOT LIKE '0'") into theCursor if theCursor is an integer then ConvertSQLCursorToArray theCursor, theDataGridArray put the result into theError ## grdData löschen set the dgData of group "grdUser" to empty if theError is empty then ## The cursor was successfully converted to an array. ## Assign it to the data grid. The 'firstname' and 'lastname' columns ## from the database cursor will appear in the matching columns ## in the data grid. set the dgData of group "grdUser" to theDataGridArray end if ## Close the database cursor revCloseCursor theCursor end if ## Close the database connection revCloseDatabase gConnectionID else answer "Error connecting to the database:" && gConnectionID & "." end if else hide group "grdUser" end if end hiliteChanged command ConvertSQLCursorToArray pCursor, @pOutArrayA local i local theFields local theError ## Get the names of all the columns in the database cursor put revDatabaseColumnNames(pCursor) into theFields if theFields begins with "revdberr," then put item 2 to -1 of theFields into theError end if if theError is empty then put 0 into i ## Loop through all rows in cursor repeat until revQueryIsAtEnd(pCursor) add 1 to i ## Move all fields in row into next dimension of the array repeat for each item theField in theFields put revDatabaseColumnNamed(pCursor, theField) into pOutArrayA[i][ theField ] end repeat revMoveToNextRecord pCursor end repeat end if return theError end ConvertSQLCursorToArray
-
Dezember 8, 2018 um 14:21 Uhr #9170
Hm, sieht alles korrekt aus:
…
put revOpenDatabase(„mysql“, dbServ, dbName, dbUser, dbPass) into tResult
…
Und diese Meldung siehst Du nicht:
…
answer error „Unable to connect to the database:“ & cr & tResult
…
?
Schau mal in das resultierende APK, ob alle Datanbanktreiber enthalten sind.
Ich selber besitze kein Handy o.ä., kann so etwas daher nicht testen.——————————————————————————
Aber mal was zu Deinem SQL, müsste LIKE nicht mit % oder _ verwendet werden?
… where nachname LIKE ‚%eier“
So habe ich es zumindest mal gelernt.Kleiner Tip am Rande: Mr. Boole is our friend!
…
## if navBar = „option“ then
## show group „Settings“
## else
## hide group „Settings“
## end if
## vs:
set the visible of grp „Setting“ to (navbar = „option“)
…
🙂Gruß
Klaus
-
Dezember 8, 2018 um 14:24 Uhr #9172
Und diese Meldung siehst Du nicht:
…
answer error „Unable to connect to the database:“ & cr & tResultNein, leider, sonst hätte ich ja zumindest einen Fehlercode.
Schau mal in das resultierende APK, ob alle Datanbanktreiber enthalten sind.
Wie mach ich das, hab leider keine Ahnung von LiveCode, das sind meine ersten Gehversuche…
set the visible of grp „Setting“ to (navbar = „option“)
Danke, ich steh auf kurze Befehlszeilen…
-
Dezember 8, 2018 um 14:44 Uhr #9174
OK, also geht schon der Versuch zu verbinden in die Hose, bzw. LC stopt an der Stelle.
Soweit ich weiß, ist ein APK eine ZIP Datei „in disguise“. Also mal duplizieren und als Endung .zip dranschreiben, oder direkt mit WinRAR, 7-Zip oder einem anderen Entpack-Programm versuchen zu öffnen. Dann in dem Inhalt nachsehen, ob Du irgendwo einen Anhaltspunkt finden kannst.
Hier noch ein Tip, wie man Skripte besser lesbar macht, indem man verschachtelte IT THEN ELSE Klauseln aufs Mindeste reduziert. Zunächst alle AUSCHLUSS-Kriterien abhandeln, siehe die ersten zwei IF THEN Klauseln.
on hiliteChanged put the hilitedItemName of me into navBar set the visible of grp "Setting" to (navbar = "option") if navBar <> "members" then hide group "grdUser" exit hilitechanged end if show group "grdUser" put "Anwesenheit" into field "navText" ## Datenbank öffnen OpenMySQL if gConnectionID is NOT an integer then answer "Error connecting to the database:" && gConnectionID & "." exit hilitechanged end if ## Query the database for data put revQueryDatabase(gConnectionID, "SELECT LastLogInDate, UserName FROM Members WHERE PKID NOT LIKE '1' AND IsActive Like '-1' AND LID NOT LIKE '0'") into theCursor if theCursor is an integer then ConvertSQLCursorToArray theCursor, theDataGridArray put the result into theError ## grdData löschen set the dgData of group "grdUser" to empty if theError is empty then ## The cursor was successfully converted to an array. ## Assign it to the data grid. The 'firstname' and 'lastname' columns ## from the database cursor will appear in the matching columns ## in the data grid. set the dgData of group "grdUser" to theDataGridArray end if ## Close the database cursor revCloseCursor theCursor end if ## Close the database connection revCloseDatabase gConnectionID end hiliteChanged
-
Dezember 8, 2018 um 14:49 Uhr #9176
Vielen Dank für Deine Tipps…
Melde mich zurück, sobald ich die APK durchsucht habe.
CU Andreas
-
Dezember 8, 2018 um 14:55 Uhr #9178
Ich habe schon des öfteren gehört, daß „Search for required inclusion when saving the standalone applikation“ nicht immer zufriedenstellend arbeitet.
Also mal „Select inclusion…“ anklicken und selber die Datenbanktreiber anklicken bei „Inclusions“. Ist auf jeden Fall einen Versuch wert.
Oder es mal so versuchen:
... TRY put revOpenDatabase("mysql", dbServ, dbName, dbUser, dbPass) into tResult CATCH den_Fehler answer "Problem:" && den_Fehler exit to top end try ...
-
Dezember 8, 2018 um 14:57 Uhr #9180
Hab gerade die APK entpackt, es sieht so aus, als wären da tatsächlich keine DB Treiber dabei. Zumindest kann ich keine erkennen.
Inhalt:
AndroidManifest.xml
classes.dex
resources.arsc..\lib\armeabi
librevandroid.so..\META-INF
CERT.RSA
CERT.SF
MANIFEST.MF..\res
..\res\drawable
icon.png..\res\layout
livecode_inputcontrol.xml..\res\xml
nfc_tech_filter.xml -
Dezember 8, 2018 um 14:58 Uhr #9182
Da haben sich unserer Postings überschnitten.
Bitte mal meinen letzten Absatz lesen und ausprobieren. -
Dezember 8, 2018 um 15:02 Uhr #9184
Ja, DANKESCHOeN.Das war es!
Jetzt sind die DB Treiber im Paket enthalten und die Verbindung klappt.
Wieder was dazu gelernt…
Lieben herzlichen Danke Klaus.
-
Dezember 8, 2018 um 15:10 Uhr #9186
Gern geschehen!
Ich habe hier direkt mal wieder einen Kommentar dazu abgegeben:
https://quality.livecode.com/show_bug.cgi?id=21223
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.