German SQL-DB unter Android 11 ??

strupp01

Active Member
Licensed User
Longtime User
Ich versuche für ein Android 11 Handy ein Programm mit SQL-DB zu schreiben. Jedoch schon beim erzeugen eines neuen Ordners mit File.MakeDir gibt es Probleme. Es gibt keine Fehlermeldung, aber der Ordner wird nicht angelegt. Lege ich den Ordner mit TotalCommander an kann ich trotzdem keine Datenbank anlegen. Hier kommt eine Fehlermeldung:
1633638287254.png

Gibt es eine Lösung für Android 11? Hat einer ein Beispiel?
Gruß strupp01
 

DonManfred

Expert
Licensed User
Longtime User
1, Vergiss File.DirRootExternal!
2. File.DirRootExternal ist immer schwerer Zugriff zu bekommen
3. Vergiss File.DirRootExternal!


 

strupp01

Active Member
Licensed User
Longtime User
@DonManfred ,
Danke für deine Antwort. Komme erst jetzt dazu, dir zu Antworten. Werde mir deine Vorschläge ansehen und versuchen sie umzusetzen. File.DirRootExternal war damals schon nicht so einfach umzusetzen. Hoffe das mir das diesmal auch gelingt. Werde nach Erfolg berichten.
 

strupp01

Active Member
Licensed User
Longtime User
Beim ersten Kompilieren kommt diese Fehlermeldung:

1633786052237.png


Was soll mir das sagen? Welche Datei fehlt?
 

strupp01

Active Member
Licensed User
Longtime User
Ich werde mal ins englische Forum wechseln. Dort sind halt mehr User zu erreichen.
 

klaus

Expert
Licensed User
Longtime User
Dein Projekt scheint ein B4XPages Projekt zu sein.
Ist es nur ein B4A Projekt oder ein Cross-Plattform Projekt ?
In B4XPages Projeketen wird ein Shared Files Ordner gesucht,
Hast Du ein B4XMainPage Modul ?
Wenn ja, siehst Du oben diese Zeile:
#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
Diese kannst Du versuchen diese Zeile auszukommentieren.

Wo befindet sich die SQL-DB ?
Du musst diese, im B4A Programm, von Files.DirAssets in Files.DirInternal kopieren.
 

Attachments

  • 1633859297474.png
    1633859297474.png
    37.2 KB · Views: 191

strupp01

Active Member
Licensed User
Longtime User
Hallo Klaus,
habe schon im englischen Forum gepostet und deshalb hier nicht mehr nachgesehen. Ist mir so jedoch lieber. Dein Tipp mit Zeile auskommentieren war gold richtig.
Die Datenbank soll neu angelegt werden. wollte sie im internen Speicher des Handy anlegen unter einem Verzeichnis 'Spritverbrauch'. Habe das neue Prinzip noch nicht ganz verstanden und stochere somit noch ein bisschen im Dunkeln. Kann aber jetzt weiter probieren, da die Fehlermeldung dank deinem Tip verschwunden ist.
 

strupp01

Active Member
Licensed User
Longtime User
Beim Versuch eine DB anzulegen kommt eine Fehlermeldung. Der Ordner 'Starter.Prog_Verzeichnis' wird nicht angelegt. Es kommt eine Fehlermeldung wie im Post #1 beschrieben.
Kann man nicht mehr im internen Speicher ein Unterverzeichnis anlegen?

Hier der Code zum Anlegen der Datenbank.



B4X:
    'Datenbank erstellen, wenn noch nicht vorhanden
    If FirstTime Then
        If File.Exists(File.DirRootExternal, "/" & Starter.Prog_Verzeichnis & "/" & Starter.DB_Name) = False Then
            Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
            wait for Activity_PermissionResult(Permission As String, Result As Boolean)

            'Pfad erzeugen
            File.MakeDir(File.DirRootExternal, Starter.Prog_Verzeichnis)
'            File.MakeDir(Starter.rp.GetAllSafeDirsExternal("Mein Spritverbrauch"))

            'DB erzeugen
            Main.SQL_DB.Initialize(File.DirRootExternal,"/" & Starter.Prog_Verzeichnis & "/" & Starter.DB_Name, True)
            
                'Tabelle anlegen
                Main.SQL_DB.ExecNonQuery("CREATE TABLE IF NOT EXISTS Tankvorgang (FZNR Long, Datum Text, Datum_zum_sortieren Long, Zeit Text, Ort Text, Tachostand Real, Liter Real, Literpreis DECIMAL(7,2), Verbrauch Real, Rechnung Real, Tankart Text, Beleg Blob, Notiz Text)")

            'DB schließen
            Main.SQL_DB.Close
        End If
    End If
 

strupp01

Active Member
Licensed User
Longtime User
Habe wohl noch nicht den Unterschied zwischen B4A Projekt oder ein Cross-Plattform Projekt verstanden. Ich habe wohl bisher einen Mix erstellt. Muss mir erst mal mehr zu den beiden Möglichkeiten anlesen. Habe dazu im Internet von dir eine Anleitung gefunden
B4XPages Cross-platform projects
Geht denn noch beides unter Android 11 ?
 

klaus

Expert
Licensed User
Longtime User
Geht denn noch beides unter Android 11 ?
Ja !
Aber für neue Projekte schlägt Erel vor B4XPages Prjokte zu erstellen.
Das mach die komplexe Android Activity Handlung viel einfacher.
Einziger Nachteil, es funktioniert nur in einer Geräterichtung Hochformat oder Querformat aber nicht Beide.
 

DonManfred

Expert
Licensed User
Longtime User
File.DirRootExternal
Du hast keinen Zugriff auf diesen Pfad. Zumindest nicht in neuen Android-Versionen.

 

strupp01

Active Member
Licensed User
Longtime User
Hatte das schon verstanden mit File.DirRootExternal. War nur noch nicht so weit mit der Umsetzung. Hatte noch Probleme mit der Programmierung von B4XPages.
Habe jetzt auch eine DB angelegt und auch schon Daten ausgelesen.
Gibt es eine Möglichkeit, die Datenbank vom Handy auf meinen PC zu spielen, um dort mit einem SQL-Browser mir die Daten anzusehen bzw. auch zu verändern.
Wo steht diese Datenbank auf dem Handy? Finde sie bisher noch nicht.
 

strupp01

Active Member
Licensed User
Longtime User
OK, werde ich mal probieren.
Habe jedoch noch ein Problem. Im Debug-Modus läuft das Programm schon so weit, jedoch wenn ich über Release ein fertiges Programm erstellen wil, kommt folgende Fehlermeldung :
1634035919225.png


Wie jedoch zu sehen, ist die Datei vorhanden und wird auch im Debug-Modus am Handy angezeigt.
 

strupp01

Active Member
Licensed User
Longtime User
Habe soeben den Fehler mit der Datei 'zapfsäule.png' gefunden. Ungültiger Buchstabe 'ä' enthalten. Geändert auf 'zapfsaeule.png'.
Warum der Name im Debug-Modus funktioniert, ist mir jedoch ein Rätsel. Wichtig jedoch ist, Fehler behoben.

Probleme jedoch gibt es noch bei der SQL-Datenbank. Ich erzeuge eine Tabelle. Es wird kein Fehler gemeldet. Wenn ich die Datei aber mit Save.File auslager, kommt die Datei mit 0Byte auf der SD-Karte an.


B4X:
        'DB erzeugen
        Main.SQL_DB.Initialize(File.DirInternal,Starter.DB_Name, True)
    
        Main.SQL_DB.ExecNonQuery("DROP TABLE IF EXISTS Tankvorgang")
    
        'Tabelle anlegen
        Main.SQL_DB.ExecNonQuery("CREATE TABLE IF NOT EXISTS Tankvorgang (FZNR Long, Datum Text, Datum_zum_sortieren Long, Zeit Text, Ort Text, Tachostand Real, Liter Real, Literpreis DECIMAL(7,2), Verbrauch Real, Rechnung Real, Tankart Text, Beleg Blob, Notiz Text)")
        
        'DB schließen
        Main.SQL_DB.Close
 

strupp01

Active Member
Licensed User
Longtime User
SQL-Datenbank funktioniert auch. Somit hier alles OK. Danke für die Hilfestellungen.
 
Top