Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS SQLite iOS <> SQLite Android! (https://www.delphipraxis.net/177935-sqlite-ios-sqlite-android.html)

Mavarik 28. Dez 2013 16:47

AW: SQLite iOS <> SQLite Android!
 
Zitat:

Zitat von GS1200 (Beitrag 1241285)
Hallo zusammen,

ich bin neu im Thema Mobile-Devices unter XE5 und habe statt iOS erst einmal mit meinem Galaxy S4 unter Android 4.2.2 angefangen meine ersten Erfahrungen zu sammeln.
Genau dieses o.a. Problem hatte ich auch und das Fixing der Data.DBXSqlite war die Lösung. Ich habe ewig die Ursache gesucht und den Fehler nur bei mir Code vermutet.

Ich wollte einfach mal danke sagen, an all diejenigen,die hier im Forum zu Lösungen beitragen. :-D

Gruß

Axel

Jo ich habe fast 2 Monate in meinem Code den Fehler gesucht... Bis ich dann den Fehler mit dem Debugger gefunden habe...

schand99 3. Feb 2015 13:25

AW: SQLite iOS <> SQLite Android!
 
Hallo,

habe hier ein ähnliches Problem wie weiter oben beschrieben.
Mit dem Code erstelle ich eine SQLite Datenbank:

Delphi-Quellcode:
DataPfad:= TPath.Combine(TPath.GetDocumentsPath, 'Test.db');
if not TFile.Exists(DataPfad) then
  Begin
    Try // Datenbank erstellen
      SQLConnection.connected:=False;
      SQLConnection.Params.Values['Database'] := DataPfad;
      Startup.SQLConnection.Params.Values['FailIfMissing'] := 'False';
      Startup.SQLConnection.Connected:=True;
    except
      on E: EDatabaseError Do ShowMessage(E.Message);
    End;
    Try
      SQLBefehl:='CREATE TABLE Kontakte(EintragID INTEGER PRIMARY KEY AUTOINCREMENT, TelNummer VARCHAR(50) NOT NULL, KontaktName VARCHAR(100));';
      DtaZeilen := SQLConnection.ExecuteDirect(SQLBefehl);
    except
      on E: Exception Do Showmessage(E.ClassName + ' / ' + E.Message);
    End;
    SQLConnection.Connected:=False;
    if not FileExists(DataPfad) then
       ShowMessage('Datenbank nicht erstellt');
  end;
Wie Ihr sehen könnt, frage ich am Ende des Blockes ab, ob die Datei erstellt wurde. Sie wird erstellt, zumindest wird mir das mit FileExists angezeigt. Warum aber sehe ich die Datei nicht mit einem Dateiexplorer wie z.B. Astro-File Manager oder gar mit aSQLiteManager?

Wäre toll wenn mir jemand einen Hinweis geben könnte was ich da falsch mache

Olli73 3. Feb 2015 13:53

AW: SQLite iOS <> SQLite Android!
 
Zitat:

Zitat von schand99 (Beitrag 1288732)
Wie Ihr sehen könnt, frage ich am Ende des Blockes ab, ob die Datei erstellt wurde. Sie wird erstellt, zumindest wird mir das mit FileExists angezeigt. Warum aber sehe ich die Datei nicht mit einem Dateiexplorer wie z.B. Astro-File Manager oder gar mit aSQLiteManager?

Weil andere Apps nicht auf "TPath.GetDocumentsPath" zugreifen dürfen, der ist nur für deine App.

schand99 3. Feb 2015 13:56

AW: SQLite iOS <> SQLite Android!
 
Stimmt, grad auch entdeckt. Wenn ich den Pfad mit GetSharedDocuments auslese dann funktionierts.

schand99 3. Feb 2015 15:15

AW: SQLite iOS <> SQLite Android!
 
Nächstes Problem.

Ich schaffe es Daten in die SQLite Datenbank einzutragen. Nun funktioniert das Auslesen nicht
Delphi-Quellcode:
Try
  FSQLCommandText := 'SELECT * FROM Kontakte;';
  SQLConnection.Execute(FSQLCommandText, NIL, FSQLDataSet);
  FSQLDataSet.First;
  While NOT FSQLDataSet.EOF Do Begin
    sStr := '';
    For i := 0 To FSQLDataSet.FieldCount - 1 Do
      sStr := sStr + ' ' + FSQLDataSet.Fields[i].AsString;
    ShowMessage(sStr);
    FSQLDataSet.Next;
  End;
Except On E: EDatabaseError Do ShowMessage(E.Message);
End;
Verstehe nicht warum. Wenn ich die Datenbank mit der App "SQLite Magic" öffne, dann wird alles angezeigt was ich in die Tabelle "Kontakte" eingetragen habe. Aber der obige Quellcode liefert mir nicht einen Datensatz.
Habe die SQL-Abfrage mittlerweile gefühlte 100x neu geschrieben aber ohne Erfolg. Gibt es vielleicht in XE6 einen Bug?

Sir Rufo 3. Feb 2015 15:59

AW: SQLite iOS <> SQLite Android!
 
Solltest du nicht besser einen neuen Thread erstellen?

BTW: Dein
Delphi-Quellcode:
try except
kannst du ersatzlos streichen und du bekommst mehr Informationen bei einer Exception (die auch sehr hilfreich wären, wenn du uns diese mitteilst).

PS Manchmal macht es sich auch gut, wenn man einen Blick in die Dokumentation wirft. Meistens sieht man dann klarer. Ein guter Anfang wäre Delphi-Referenz durchsuchenTSqlConnection.Execute


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz