C# Verbindung zu einer SQLite Datenbank auf einem Server?
Hallo an alle Entwickler,
ich habe jetzt etwas im Internet gesucht, bin allerdings bisher noch nicht fündig geworden. Ich möchte mich in einer Anwendung zu einem Server verbinden, der nicht in meinem Netzwerk ist. Auf diesem Server liegt eine SQLite Datenbankdatei ab, auf die ich gerne zugreifen möchte. Weiß jemand, wie ich das anstellen kann? Ich dachte da an folgende Methode:
new SQLiteConnection(@"Server=12.34.567.89:1234;Data Source=\home\test.sqlite;");
Wenn ich mich so versuche zu verbinden, kommt unable to open database file.
Vielen Dank im Voraus.
Der Port ist freigegeben.
5 Antworten
SQLite ist nicht für den Server-Betrieb gedacht.
Es ist nur eine einzelne Datei, solange Du also Zugriff auf eben diese Datei hast, ist völlig egal, wo sie liegt und ob das ein Server ist.
Wenn Du einen Datenbank-Server haben willst, dann nimm lieber ein Datenbanksystem, was für den Server-Betrieb gebaut wurde, wie der SQL-Server von Microsoft oder MySQL.
Ich nutze SQLite eigentlich nur, um lokal Daten abzuspeichern, weil es mMn. angenehmer zu nutzen ist, als Json under XML.
Sqlite ist doch einfach nur eine Datei, welcher Prozess hört also auf Port 1234?
Du brauchst einen Prozess der auf 1234 lauscht und DB Zugriff erlaubt. Dass Du den Pfad auf dem Zielsystem angibst ist auch seltsam. Der Prozess muss wissen wo die DB ist, der, der von außen auf die DB zugreifen will muss nicht wissen wo sie physisch liegt.
Gruß
Also SQLite zeichnet sich ja grad dadurch aus, dass es keinen Server gibt:
SQLite is an example of a classic serverless database engine. With SQLite, there are no other processes, threads, machines, or other mechanisms (apart from host computer OS and filesystem) to help provide database services or implementation. There really is no server.
Dazu mal:
Access remote sqlite database
You cannot directly access an sqlite database remotely like that. If you need to share it, you will have to develop a web service and talk to the web service rather than the database from your Qt Application. There are some tools which act as a web service for stuff like that, e.g. this site has some links.Mar 19, 2013
Access sqlite from a remote server - Stack Overflow
Hilft dir das hier:
https://www.codeproject.com/Questions/1166694/How-can-I-access-sqlite-DB-from-another-machine
Du musst irgendwie den Dateizugriff ermöglichen. Einen extra Prozess für SQLite gibt es auf der Serverseite nicht.
Für mich ist SQLite dann die falsche Wahl und ich würde für Client-Server eher auf ein "richtiges" DBMS (DatabaseManagementSystem) setzen. SQLite ist für mich eine lokale DB, wenn man keine full blown DBMS möchte, weil man eh kein Client-Server nutzen will. Wenn Du zum Beispiel selbst deinen ServerProzess implementierst ist SQLite ganz nützlich um schnell mal eine DB zu haben ohne einen extra Prozess installieren und starten zu müssen.
Gruß
SQLite hat keinen Datenbankserver, der auf irgendeinem Port hört. Wenn die Datenbank auf einem Server sein soll, musst Du entweder ein entsprechendes Datenbanksystem wie MySQL oder PostgreSQL nehmen, oder aber den entsprechenden Ordner freigeben und dann als Data Source den UNC-Pfad zur Datei nehmen (z.B. "\\server\Pfad\datenbank.sqlite").
Wie schon geschrieben wurde, ist SQLite an sich erst einmal kein Server. Du kannst SQLite mithilfe einer DLL wie jede andere Datenbank nutzen. Die DLL stellt dabei die Verbindung zur Datei her.
Wenn die Datenbank-Datei auf dem Server liegen soll, muss du sie irgendwie lokal verfügbar machen, zum Beispiel mit einer Dateifreigabe oder Samba.
Aber freu dich nicht zu früh: Für Multiuser ist SQLite nicht besonders gut geeignet.
Ich empfehle auf MySQL oder MariaDB auszuweichen. Das sind richtige Datenbanksysteme, die viel skalierbarer sind und sich auch vorzüglich für mehrere Nutzer gleichzeitig eignen.
SQLite ist gut als Datenspeicher für lokale Anwendungen geeignet. Kommt zum Beispiel bei Android-Apps sehr gerne zum Einsatz.
https://www.connectionstrings.com/sqlite/
Hier findest du alle Varianten ... den Pfad duch einen UNC zu der entsprechenden Datei ersetzen und fertig.
Ich habe versehentlich auf "Nicht hilfreich" geklickt. Das sollte selbstverständlich das Gegenteil sein.
Deine Antwort ist sehr interessant... Wie stelle ich das denn an, das meine Anwendung weiß, wo die Datenbankdatei liegt?
MfG