SQLite in HTML einbinden

ReptileX2

Lt. Junior Grade
Dabei seit
Dez. 2008
Beiträge
444
Hallo zusammen,

ich habe mich leider etwas in dieses bestimmt schon oft durchgekaute Thema versteift.
Ich habe eine HTML-Datei und eine SQLite Datenbank.
Der Zugriff und das Bearbeiten der Datenbank funktioniert dank sql.js wunderbar in allen getesteten Browsern.

Der Einfachheit halber wollte ich dem User ersparen die SQLite DB per <input type='file'> auszuwählen.
Leider funktioniert das aus Sicherheitsgründen aber nicht...ja ich weiß :rolleyes:

Gibt es dennoch eine elegante Möglichkeit die SQLite DB einzubinden?
Ändert sich daran etwas wenn die SQLite DB auf einem Webserver gehostet wird
und per http:// angesprochen werden kann?

Eigentlich wollte ich ja Netzwerkdienste und Server umgehen um eine Art offline Technologiedatenbank zu nutzen.

MfG
 
Die willst jedem Browser volle Lese und Schreibrechte auf der Datenbank geben? Das ist noch schlimmer als SQL Injection...

Da kommt dann einfach jemand und DROPt alle Tabellen und dann?

Vor eine Datenbank, die keine ACLs unterstützt, gehört ein Server, der den Zugriff regelt. Und mit Server meine ich ein System, auf das die Clients nur über fest definierte Schnittstellen Zugriff haben.
 
Zitat von ReptileX2:
...eine Art offline Technologiedatenbank...

Ich unterstelle in meinem Unternehmen niemanden böswillige Absichten.
Ausserdem wird ausschließlich lesend zugegriffen.

Aber danke für die konstruktive Hilfestellung bezüglich meiner Frage!
 
Du brauchst in dem Fall nicht mehr zu wissen als die Fragestellung hergibt!
Weitere Informationen werden erst durch Lösungsansätze nötig...

Was sollen diesen blöden Kommentare immer?
Damit wird der gesamt Threat kaputt gemacht!
 
Diese Kommentare halten irgendwelche Unwissenden davon ab, schwerwiegende Fehler zu begehen.

Die Wissenden fragen im Normalfall auf dafür spezialisierten Plattformen, wie z.B. StackExchange / StackOverflow, weil in diesem Forum hier vielleicht 1-2 Leute je mit sql.js gearbeitet haben. Und diese 1,5 Personen sind die nächsten Tage garantiert nicht da. Das sollte dir eigentlich klar sein.

Abgesehen davon ist das hier ein Forum, wo jeder seinen Senf zu jedem Thema abgeben kann. Wenn du professionelle Hilfe willst, dann bezahl dafür. Das hier - genau so wie StackExchange - basiert auf kostenlosen, freiwilligen Ratschlägen.



Mit ein wenig Kontext-Infos kann ich dir aber auch helfen. Wenn ich das richtig verstanden habe, kann man eine SQLite DB aus einem beliebigen File (oder sonstigem ByteStrom) laden und dann halt im Browser modifizieren.
Dabei arbeitet der Browser mit der Datenbank im Speicher, d.h. INSERT und UPDATE Operationen werden nicht im File selbst gespeichert. Das führt uns zum ersten Problem: Paralleles Bearbeiten der DB ist unmöglich bzw. man müsste 'nen ziemlich komplexen Merge-Algorithmus schreiben (so wie in Git oder SVN). Man arbeitet also nicht auf der DB, sondern auf einer Kopie der DB.

Und dann noch die Frage, wie du die modifizierte DB wieder speicherst. Denn im Grunde kannst du nur innerhalb der Browser SandBox Dateien auf der Festplatte speichern.

Also arbeitest du vermutlich mit "FileReader" ? Kannst ja die 5 Zeilen Code hier einfach mal posten, würde vieles leichter machen.
 
Zuletzt bearbeitet:
Wie wäre es mit einer Webanwendung ? Application Server Tomcat, was auch immer ?
Diese Lösung scheint mir sehr merkwürdig.

Villt portierst du alles auf mysql um und greifst mit php und prepared statements dann zu.
 
Jetzt arbeiten wir doch langsam in die richtige Richtung...

Ja es wird eine Kopie per FileReader erzeugt um dem User lediglich ein paar hinter Auswahllisten und Buttons
versteckten Views anzubieten.
Diese werden halt tabellarisch, sortierbar ausgegeben.
Es funktioniert alles wie gewünscht und mehr als lesender Zugriff ist gar nicht gewollt.

Das einzige Problem ist, dass die DB im Browser manuell ausgewählt werden MUSS.
Genau hier setzt meine Frage an. Wie könnte ich dieses umgehen?
Ich möchte die DB statisch an Java als [object FileList] übergeben.

Wie wäre es mit einer Webanwendung ? Application Server Tomcat, was auch immer ?
Diese Lösung scheint mir sehr merkwürdig.

Villt portierst du alles auf mysql um und greifst mit php und prepared statements dann zu.

Diverse Möglichkeiten in dieser Hinsicht sind mir bekannt, aber nicht gewünscht.

MfG
 
Zitat von ReptileX2:
Das einzige Problem ist, dass die DB im Browser manuell ausgewählt werden MUSS.
Genau hier setzt meine Frage an. Wie könnte ich dieses umgehen?
Ich möchte die DB statisch an Java als [object FileList] übergeben.

Hmm.. aktuell muss die Datei dann von 'nem NFS oder SMB Share ausgewählt werden, schätz ich mal.

Scheinbar würd's reichen, wenn du einen HTTP Server hast, der die Datei ausspuckt:
https://github.com/kripken/sql.js/wiki/Load-a-database-from-the-server
 
Zitat von benneque:

Super, genau das wollte ich wissen :D

Ließ mal meine Fragestellung, steht genau das drin...ich hatte schon so einen Verdacht.
Ändert sich daran etwas wenn die SQLite DB auf einem Webserver gehostet wird
und per http:// angesprochen werden kann?

Dank dir, werde das morgen mal ausprobieren.
MfG
 
Du hättest ja auch einfach mal die Doku lesen können.

Erste Anlaufstelle für alle Fragen...
 
Wer sagt das ich die Doku nicht gelesen habe?
Die Doku selbst gibt doch ausser den Metoden und Statements nichts weiter her...
 
Zurück
Top