![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: unit
SQLite ganz einfach (via Unit).. wie ? [D6]
Beginner-Frage .. ;)
ich möchte gern ganz einfach in eine Form meine SQLite-DB in Wert abfragen. Sprich: key suchen, Wert auslesen. Also ganz einfach. Ich benutze Tim Andersons "a real simple SQLite Wrapper" [ ![]() Meine Idee währe: Ich habe Unit Mainform und Unit Utility (mit versch. Funktionen). In Utility möchte ich (ein mal) bei Programmstart meine SQLite öffnen und dann in meine Mainform einfach eine Query abrufen. Ungf. so:
Delphi-Quellcode:
Problem ist: ich bekomme immer eine Access Violation.
unit Utility
... var sqlitedb: TSqliteDatabase; procedure SQLiteInitialize(databasefilename); // einmal bei Programmstart function SQLiteQuery(q as string): string; // wert auslesen procedure SQLiteDestroy; // bei programmende implementation .. Ich möchte gern SQLiteQuery so einfach wie möglich halten, etwa wie
Delphi-Quellcode:
for i:=1 to 100 do
res:=SQLiteQuery('select [myvalue] from [table] where key=' + searchkey); Hoffentlich habe ich alles korrekt erklärt. Sonnst einfach zusagen, dann Poste ich was ich soweit habe. |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Zitat:
Der Kontext drumherum ist ja ganz interessant, aber zu deinem konkreten Problem hast du fast keine Informationen gegeben :stupid: |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Unterstützt der Wrapper (SQL-)Parameter?
|
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Zeig doch mal den realen Source-Text. Der verursacht ja schließlich den Fehler.
Bei 'AccessViolation' tippe ich zunächst einmal darauf, daß da irgendwo ein
Delphi-Quellcode:
fehlt.
.Create
Gruß K-H |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin bisschen weitergekommen.. sehe Beispil im Anhang.
Habe ich das ganze so etwa korrekt verstanden ? Wir würdet ihr Fehlerzustände umgehen (zb Datenbank nicht gefunden etc). Wir überprüfe ich in function dbquery(q:string):string; ob der sqdatabase initialisiert ist ? Ich vermute eine "if sqdatabase then .." nicht gehen wird. |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Zitat:
Ich habe mir einen eigenen Wrapper für die DLL geschrieben und noch ein paar DLL-Aufrufe hinzugefügt, die in der von dir verwendeten Unit nicht existieren. Entweder weil es diese noch nicht gab als der Wrapper geschrieben wurde oder weil der Autor des Wrappers diese für nicht sinnvoll angesehen hat. In meinen Augen sind das aber sehr wichtige Funktionen wenn man tiefer in die Datenbank eingreifen will und nicht nur Daten einer Tabelle auslesen will. |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Zitat:
Wichtiger ist: wie überprüfe ich ob sqldatenbank schon initializiert wurde ? Zitat:
Zitat:
Edit: wenn ich in meiner Code "per Zufall" die Initialization auslasse, also
Delphi-Quellcode:
dann bekomme ich auch mit test eine Access Violation:
procedure databaseinit(filename: string);
begin // sqdatabase := TSQLiteDatabase.Create(filename); end;
Delphi-Quellcode:
das ist was ich meine mit Fehlersuche / test.
function dbquery(q:string):string;
var T: TSQLiteTable; begin try if Assigned(sqdatabase) then // <<<< geht leider nicht.. begin t:=sqdatabase.GetTable(q); // records ? if t.Count>0 then begin Result:=t.FieldAsString(0); end; end else Result:='!!'; finally t.free; end; end; |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Zitat:
nach meinem Verständnis funktioniert die Abfrage und liefert ein (null) Ergebnis oder eben nicht. Wenn nicht dann stelle ich die Verbindung zur DB her, und wenn danach die Abfrage immer noch kein Ergebnis liefert, dann muß sich jemand kümmern. Gruß K-H |
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Und die AV dürfte von der nicht initialisierten lokalen Variablen T herrühren. Was passiert denn, wenn Du sie gleich am Anfang mit nil vorbelegst?
|
AW: SQLite ganz einfach (via Unit).. wie ? [D6]
Zitat:
Delphi-Quellcode:
var
sqdatabase: TSQLiteDatabase = nil; // <<<<<< .. function dbquery(q:string):string; var T: TSQLiteTable; begin t:=nil; try if sqdatabase<>nil then // <<<<<< begin Danke für Verständniss für Anfänger :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz