Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugriff auf SDF DB mit ADO (https://www.delphipraxis.net/200650-zugriff-auf-sdf-db-mit-ado.html)

DieDolly 12. Mai 2019 13:22

Datenbank: SQL Compact • Version: 4 • Zugriff über: ADO

Zugriff auf SDF DB mit ADO
 
Ich versuche gerade eine vorhandene SDF-Datei auszulesen.
Wenn ich die Datei mit CompactView unter Windows 7 öffnen möchte, bekomme ich diesen Fehler
Zitat:

Datenbank kann nicht geöffnet werden:

Could not load file or assembly 'System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=123' or one of its dependencies. Das System kann die angegebene Datei nicht finden.
Windows 7 habe ich nur zum Testen für CompactView genommen. Das eigentliche Programm welches die DB nutzt läuft auf Windows 10 ohne Probleme.
Die DB würde ich aber gerne nutzen und die Daten selber auswerten.

System.Data.SqlServerCe habe ich dann als ConnectionString für Ado genommen aber dann bekomme ich den Fehler, dass der Provider nicht gefunden werden kann. Was ist der richtige ConnectionString?
Wenn ich die Datei mit dem SQLiteDatabaseBrowser öffnen möchte, werde ich nach einem Passwort gefragt. Die eigentliche Anwendung die diese Datenbank nutzt, setzt intern aber an keiner Stelle ein Passwort, um auf die DB zuzugreifen. Der Originalcode ist nur
Code:
... = new SqlCeConnection("Data Source = db.sdf");

jobo 12. Mai 2019 13:47

AW: Zugriff auf SDF DB mit ADO
 
Keine Ahnung davon, aber das Netz sagt: Neuinstallation von SQLCE 4.0 SP1
hier gibt's ähnliche Vorschläge und Registry Hacks
https://stackoverflow.com/questions/...ersion-4-0-0-0

DieDolly 12. Mai 2019 14:20

AW: Zugriff auf SDF DB mit ADO
 
Die Ortiginalsoftware funktioniert auf Windows 10. Mein eigener Zugriff aber nicht. Eine Neuinstallation von irgendwas kann nicht die Lösung sein.

EWeiss 12. Mai 2019 14:26

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Eine Neuinstallation von irgendwas kann nicht die Lösung sein.
Sorry es ist nicht irgendwas sondern ganz klar..
Die Abhängigkeit die du benötigst befindet sich nicht auf deinem System.

Du benötigst
SqlServerCe: Version = 4.0.0.0 die scheint auf Windows 7 nicht vorhanden(Installiert) zu sein.

Auf Windows 10 schon deshalb funktioniert es auch dort.
Zumindest was die Abhängigkeit angeht.

Der ConnectionString ist natürlich etwas anderes.
https://stackoverflow.com/questions/...tion-in-delphi

ADO benötigt
Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5 Oder? Und Installiert? http://www.microsoft.com/en-us/downl...s.aspx?id=5821

gruss

DieDolly 12. Mai 2019 15:44

AW: Zugriff auf SDF DB mit ADO
 
Windows 7 interessiert mich doch nicht. Das war nur zum testen.

Zitat:

Und Installiert?
Unter windows 10 ja, alles.
Ich muss es unter Windows 10 zum laufen bringen. Das Original funktioniert mein Aufruf aber nicht weil ich nicht den richtigen ConnectionString habe.

Delphi.Narium 12. Mai 2019 16:54

AW: Zugriff auf SDF DB mit ADO
 
Den kann man sich bei den ADO-Komponenten doch im Objektinspektor zusammenklicken.

Wenn man den dann da zusammengebaut hat, kann man ihn per Copy&Paste beliebig weiterverwenden, ggfls. auch in anderen Programmen / Entwicklungsumgebungen.

DieDolly 12. Mai 2019 17:23

AW: Zugriff auf SDF DB mit ADO
 
Nochmal anders. Ich habe eine SDB Datenbankdatei und keine Ahnung wie die zusammengebaut wurde. Egal welchen ConnectionsString ich benutzze, nichts ist angeblich installiert. Wäre aber nichts installiert, könnte ich die SDB Datei nicht mit einem anderen Programm lesen.

Delphi.Narium 12. Mai 2019 17:56

AW: Zugriff auf SDF DB mit ADO
 
Doch, könntest Du mit einem anderen Programm schon lesen, wenn dort einfach die passende Schnittstelle mit einkompiliert ist oder entsprechende DLLs dabei sind ...

Für FireBird brauchst Du ja auch keine installierte Software, sondern nur die passende DLL, um eine Embeddedversion zu erhalten, dito. SQLite ...

Gibt es bei Deiner Software eventuell eine ähnliche Möglichkeit?

SqlCeEngine

Bei Google suchenSqlServerCe embedded

EWeiss 13. Mai 2019 10:49

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1432018)
Doch, könntest Du mit einem anderen Programm schon lesen, wenn dort einfach die passende Schnittstelle mit einkompiliert ist oder entsprechende DLLs dabei sind ...

Und wer sagt dir das die andere Anwendung welche die SDF Datenbank öffnet und lesen kann ADO verwendet?
Wollte das nur mal so in den Raum stellen.

Zitat:

Windows 7 interessiert mich doch nicht. Das war nur zum testen.
Dann hättest du es nicht ausführen müssen und ich hätte mir eine Antwort diesbezüglich sparen können. ;)

gruss

Delphi.Narium 13. Mai 2019 11:08

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von EWeiss (Beitrag 1432056)
Zitat:

Zitat von Delphi.Narium (Beitrag 1432018)
Doch, könntest Du mit einem anderen Programm schon lesen, wenn dort einfach die passende Schnittstelle mit einkompiliert ist oder entsprechende DLLs dabei sind ...

Und wer sagt dir das die andere Anwendung welche die SDB Datenbank öffnet und lesen kann ADO verwendet?
Wollte das nur mal so in den Raum stellen.

Niemand, daher ja mein Hinweis auf eine (möglicherweise) Embeddedversion.

Die "andere" Software kann auf die Datenbank zugreifen (wie auch immer).

Das lässt aber in keiner Weise den Schluss zu, dass es mit ADO irgendeine Zugriffsmöglichkeit geben könnte. Der Eingangsthread lässt lediglich die Möglichkeit offen, dass es eventuell eine Möglichkeit geben könnte, sicher ist das aber nicht ;-)

EWeiss 13. Mai 2019 11:11

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Niemand, daher ja mein Hinweis auf eine (möglicherweise) Embeddedversion.
Ich hatte damit eigentlich den User @DieDolly gemeint ;) weil der User die Datei mit ADO öffnen will. :)
Nur ob das überhaupt funktioniert ist fraglich.

gruss

DieDolly 13. Mai 2019 14:43

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Die "andere" Software kann auf die Datenbank zugreifen (wie auch immer).
Code:
... = new SqlCeConnection("Data Source = db.sdf");
Zitat:

Ich hatte damit eigentlich den User @DieDolly gemeint weil der User die Datei mit ADO öffnen will.
Ich habe ADO nur genommen, weil es das erste war was mir über den Weg kam.

Gibt es noch andere Möglichkeiten?

DeddyH 13. Mai 2019 15:03

AW: Zugriff auf SDF DB mit ADO
 
Gerade gefunden: http://slamingcode.blogspot.com/2014...l-compact.html. Der Beitrag scheint allerdings schon etwas älter zu sein, keine Ahnung, ob das noch funktioniert.

Delphi.Narium 13. Mai 2019 15:41

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von DieDolly (Beitrag 1432078)
Zitat:

Die "andere" Software kann auf die Datenbank zugreifen (wie auch immer).
Code:
... = new SqlCeConnection("Data Source = db.sdf");
Zitat:

Ich hatte damit eigentlich den User @DieDolly gemeint weil der User die Datei mit ADO öffnen will.
Ich habe ADO nur genommen, weil es das erste war was mir über den Weg kam.

Gibt es noch andere Möglichkeiten?

Eigentlich sollte die Datenbankkomponenten egal sein, solange es auf dem Rechner eine passende Schnittstelle gibt, die von den Komponenten angesprochen werden kann.

Also über die Dialoge, die die Komponenten im Objektinspektor anbieten, die entsprechende Verbindungszeichenfolge zusammen stellen, geht es nicht (egal mit welcher Komponente) dann fehlt die entsprechende Schnittstelle.

Eine einfache Zuweisung im Quelltext wird (höchstwahrscheinlich) nicht funktionieren, da völlig unklar ist, was sie in Deinem konkreten Fall enthalten muss.

Alternative: ODBC-Verwaltung (https://docs.microsoft.com/en-us/sql...ql-server-2017) aufrufen und mit dieser erstmal versuchsweise eine Verbindung zu der Datenbank aufbauen. Wenn das nicht gelingt, sind die Chancen eher trübe.

DieDolly 13. Mai 2019 16:33

AW: Zugriff auf SDF DB mit ADO
 
Ich bekomms einfach nicht hin. Ich kann euch ja gerne mal die DB und alle DLL Dateien schicken.

Delphi.Narium 13. Mai 2019 17:15

AW: Zugriff auf SDF DB mit ADO
 
Also, was bekommst Du nicht hin?

ConnectionString via Objektinspektor bei beliebiger Datenbankkomponente erstellen?

Verbindung zur DB via ODBC-Verwaltung aufbauen?

Von DeddyH verlinkte Variante?

Was von dem hier aufgeführten trifft (am ehesten) zu: Bei Google suchenfileformat sdf

Da noch irgendein (bisher nicht versuchter) Tipp bei: How do you open an SDF file (SQL Server Compact Edition)?

'ne Datei mit der Endung SDF kann eine MS-SQL-Server-Irgendwas-Version-Datenbankdatei sein, muss es aber nicht.

Ist sicher, dass es sich um eine Datenbankdatei für die "SQL Server Compact Edition" handelt?

Dateien mit dieser Endung könnten u. a. auch von sowas stammen: Pervasive PSQL, dBase, Rosenvick AspireGold

Hast Du 'nen Hex-Editor? Könntest Du damit mal in die Datei schauen, ob da am Anfang irgendwas verräterisches drinne steht, das einen Rückschluss auf den Inhalt zulässt? (Eventuell mal 'nen Screenshot von der Hex-Ansicht hier anhängen.)

DieDolly 13. Mai 2019 18:29

AW: Zugriff auf SDF DB mit ADO
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Da noch irgendein (bisher nicht versuchter) Tipp bei: How do you open an SDF file (SQL Server Compact Edition)?
Ich möchte die Datei über Delphi öffnen. Ich habs schon mit dem SQL Viewer oder wie der heißt probiert aber die Datei hat ein Passwort. Im Original Sourcecode wird auf die DB ohne Passwort zugegriffen.

Zitat:

Ist sicher, dass es sich um eine Datenbankdatei für die "SQL Server Compact Edition" handelt?
Ja.

Zitat:

Hast Du 'nen Hex-Editor? Könntest Du damit mal in die Datei schauen, ob da am Anfang irgendwas verräterisches drinne steht,
Schon versucht aber das hilft nicht.

Ich habe die Dateien angehängt.

EWeiss 13. Mai 2019 19:58

AW: Zugriff auf SDF DB mit ADO
 
Keine Ahnung was du machst bei mir wird sie geöffnet.. auch ohne deine Dateien abgesehen von der DatenBank
Mit dem Tool.

https://www.softpedia.com/get/PORTAB...Portable.shtml


gruss

DieDolly 13. Mai 2019 20:06

AW: Zugriff auf SDF DB mit ADO
 
Wie bekomme ich das denn in Delphi hin? Das ist ja der Casus Knacksus.

Ich erhalte erst einmal
Zitat:

---------------------------
SdfBrowser
---------------------------
Can not open database Database1.sdf, error: Es wurde versucht, eine Assembly von einer Netzwerkadresse zu laden, was in früheren Versionen von .NET Framework zum Ausführen der Assembly als Sandkastenassembly geführt hätte. In dieser Version von .NET Framework wird die CAS-Richtlinie standardmäßig nicht aktiviert, dieser Ladevorgang kann daher gefährlich sein. Wenn Sie nicht beabsichtigen, durch diesen Ladevorgang eine Sandkastenassembly zu erstellen, aktivieren Sie den loadFromRemoteSources-Schalter. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkId=155569".

Klicke ich da auf OK fragt es mich nach einem Passwort.

hoika 13. Mai 2019 20:11

AW: Zugriff auf SDF DB mit ADO
 
Hallo,
also wenn ich in Google

delphi sql server compac

suche, wird doch einiges gefunden,

z.B.
https://www.experts-exchange.com/que...mpact-3-5.html

Erwarte aber bitte nicht, dass ich das alles austeste ... ;)

EWeiss 13. Mai 2019 20:12

AW: Zugriff auf SDF DB mit ADO
 
Ich habe ja keine Ahnung was du eigentlich tust..
Du arbeitest mit .net oder Delphi.
Wenn unter Delphi dann frage ich mich ernsthaft warum du dann CSharp Bibliotheken verwendest (Dann wunderst du dich das es nicht läuft? )

gruss

DieDolly 13. Mai 2019 20:12

AW: Zugriff auf SDF DB mit ADO
 
Das gucke ich mir gleich an. Ich finde es nur extremst seltsam, dass nicht einmal das Tool von oben bei mir richtig funktioniert.

Zitat:

Ich habe ja keine Ahnung was du eigentlich tust..
Du arbeitest mit .net oder Delphi.
Ich habe mir das Tool runtergeladen was du verlinkt hast und dort ziehe ich die SDB Datei rein mehr nicht.

Zitat:

Wenn unter Delphi dann frage ich mich ernsthaft warum du dann CSharp Bibliotheken verwendest (Dann wunderst du dich das es nicht läuft? )
Sollte es nicht egal sein wie man eine Datenbank ausließt? Ob aus Delphi oder C#? Aber soweit bin ich noch nicht einmal.

EWeiss 13. Mai 2019 20:14

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von DieDolly (Beitrag 1432123)
Das gucke ich mir gleich an. Ich finde es nur extremst seltsam, dass nicht einmal das Tool von oben bei mir richtig funktioniert.

Zitat:

Ich habe ja keine Ahnung was du eigentlich tust..
Du arbeitest mit .net oder Delphi.
Ich habe mir das Tool runtergeladen was du verlinkt hast und dort ziehe ich die SDB Datei rein mehr nicht.

Ich verweise nochmal auf Delphi <> .net

Siehe auch!
Zitat:

Hallo,
also wenn ich in Google

delphi sql server compac

suche, wird doch einiges gefunden
gruss

DieDolly 13. Mai 2019 20:15

AW: Zugriff auf SDF DB mit ADO
 
Warum funktioniert denn nicht einmal das verlinkte Tool bei mir? Ich nutze ein ganz normales Windows 10.

Schokohase 13. Mai 2019 20:17

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von DieDolly (Beitrag 1432126)
Warum funktioniert denn nicht einmal das verlinkte Tool bei mir? Ich nutze ein ganz normales Windows 10.

Das sagt dir doch die Fehlermeldung:
Zitat:

Es wurde versucht, eine Assembly von einer Netzwerkadresse zu laden [...]
Hast du das Tool auf einem Netzwerk-Share liegen und startest es von dort?

Dann kopiere es auf eine lokale Festplatte und starte es von dort (der lokalen Festplatte) aus.

DieDolly 13. Mai 2019 20:17

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Hast du das Tool auf einem Netzwerk-Share liegen?
Eben nicht ;)

So langsam hasse ich Windows 10. Solche Probleme gab es früher nie.

EWeiss 13. Mai 2019 20:19

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Warum funktioniert denn nicht einmal das verlinkte Tool bei mir? Ich nutze ein ganz normales Windows 10.
.Net Framework aktiviert?

Zitat:

So langsam hasse ich Windows 10. Solche Probleme gab es früher nie.
Ich seit Anbeginn und da hat sich bisher auch nichts dran geändert ;)

gruss

Schokohase 13. Mai 2019 20:19

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von diedolly (Beitrag 1432129)
Zitat:

hast du das tool auf einem netzwerk-share liegen?
eben nicht ;)

so langsam hasse ich windows 10. Solche probleme gab es früher nie.

das liegt nicht an windows 10
das hat etwas mit dem .net Framework zu tun

Wo liegen denn diese Dateien genau? Irgendwas wird als Netzwerk-Share betrachtet und darum gibt es diesen Fehler

EWeiss 13. Mai 2019 20:22

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von Schokohase (Beitrag 1432131)
Zitat:

Zitat von diedolly (Beitrag 1432129)
Zitat:

hast du das tool auf einem netzwerk-share liegen?
eben nicht ;)

so langsam hasse ich windows 10. Solche probleme gab es früher nie.

das liegt nicht an windows 10
das hat etwas mit dem .net Framework zu tun

Wo liegen denn diese Dateien genau? Irgendwas wird als Netzwerk-Share betrachtet und darum gibt es diesen Fehler

Ja bei dem .net Programm.
Nur man kann nicht erwarten das ein Delphi Programm auf das .net Framework zugreift.
Dafür gibt es entsprechende Bibliotheken speziell für Delphi wie @hoika schon verlinkt hat.

Zitat:

Sollte es nicht egal sein wie man eine Datenbank ausließt? Ob aus Delphi oder C#? Aber soweit bin ich noch nicht einmal.
Nein ist nicht egal.
Wenn du mit Delphi arbeitest dann verwende die Delphi Bibliotheken und versuchen nicht die Assembly's von .Net zu verwenden das geht in die Hose.

gruss

DieDolly 13. Mai 2019 20:25

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Wo liegen denn diese Dateien genau? Irgendwas wird als Netzwerk-Share betrachtet und darum gibt es diesen Fehler
Der SdfBrowser liegt auf D (lokal) und die Datenbankdatei auf C (lokal). Aber egal was ich wohin kopiere, ich bekomme diese Meldung.

Wenn ich das hier in die config-Datei vom SdfBrowser einfüge dann gehts.
Zitat:

<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
Soweit bin ich schon einmal! Jetzt kann ich mich um Delphi kümmern.

Schokohase 13. Mai 2019 20:27

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von DieDolly (Beitrag 1432134)
Zitat:

Wo liegen denn diese Dateien genau? Irgendwas wird als Netzwerk-Share betrachtet und darum gibt es diesen Fehler
Der SdfBrowser liegt auf D (lokal) und die Datenbankdatei auf C (lokal). Aber egal was ich wohin kopiere, ich bekomme diese Meldung.

Das Problem liegt dann aber komplett bei dir.

Ich habe das Programm heruntergeladen, in meinem Download-Ordner entpackt, gestartet und deine Datenbank-Datei (Database1.sdf) erfolgreich geöffnet.

Ach, ja: Windows 10 1809 17763.475

DieDolly 13. Mai 2019 20:30

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Das Problem liegt dann aber komplett bei dir.
Habe es jetzt erst einmal auf unschöne Art und Weise geregelt. Jetzt kann ich mir endlich das Delphizeug angucken.

hoika 13. Mai 2019 20:31

AW: Zugriff auf SDF DB mit ADO
 
Hallo,
verd... ;)

zu spät ;)

https://docs.microsoft.com/en-us/dot...ources-element

EWeiss 13. Mai 2019 20:35

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von Schokohase (Beitrag 1432135)
Zitat:

Zitat von DieDolly (Beitrag 1432134)
Zitat:

Wo liegen denn diese Dateien genau? Irgendwas wird als Netzwerk-Share betrachtet und darum gibt es diesen Fehler
Der SdfBrowser liegt auf D (lokal) und die Datenbankdatei auf C (lokal). Aber egal was ich wohin kopiere, ich bekomme diese Meldung.

Das Problem liegt dann aber komplett bei dir.

Ich habe das Programm heruntergeladen, in meinem Download-Ordner entpackt, gestartet und deine Datenbank-Datei (Database1.sdf) erfolgreich geöffnet.

Ach, ja: Windows 10 1809 17763.475

Sorry! Sehe ich genauso ;)
Ich stelle auch nichts ein.

gruss

hoika 13. Mai 2019 20:41

AW: Zugriff auf SDF DB mit ADO
 
Hallo,
vielleicht hast Du (EWeiss) ja noch ein altes Dotnet-Frame drauf (3.5).

DieDolly 13. Mai 2019 20:45

AW: Zugriff auf SDF DB mit ADO
 
Ich bin einen Schritt weiter und weiß nun, dass die Datenbank Version 4.0 ist von <irgendwas>.
Mein ConnectionString scheint aber nicht zu funktionieren. Ich habe mir zum Test die DLL Dateien von SdfBrowser rauskopiert und neben meine Test-Exe gelegt
Zitat:

Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=db.sdf
Der Provider kann nicht gefunden werden. Ich gehe mal davon aus, das er die DLL Dateien nicht findet oder denke ich falsch? Prodiver <> die SqlCe DLLs ?

Schokohase 13. Mai 2019 20:51

AW: Zugriff auf SDF DB mit ADO
 
Also, du musst
  1. Download SQLCompact 4.0 von https://www.microsoft.com/de-DE/down....aspx?id=17876
  2. Installieren von SQL Compact 4.0
Dann kannst du auch deinen Provider
Delphi-Quellcode:
Microsoft.SQLSERVER.CE.OLEDB.4.0
verwenden.

PS: Bei einem 64-Bit OS musst du die x64 Variante von SQL Compact herunterladen und installieren. Dabei wird der x32 und x64 Provider installiert.

DieDolly 13. Mai 2019 20:54

AW: Zugriff auf SDF DB mit ADO
 
Gilt der Download nur für mich? Wie sieht das später mit der Exe aus. Ist die auf anderen Systemen abhängig von diesem Provider oder ist das dann alles fest in der Exe drin?
Weil das soll es nicht sein.

Schokohase 13. Mai 2019 20:57

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Zitat von DieDolly (Beitrag 1432142)
Gilt der Download nur für mich? Wie sieht das später mit der Exe aus. Ist die auf anderen Systemen abhängig von diesem Provider oder ist das dann alles fest in der Exe drin?´
Weil das soll es nicht sein.

Wenn du über den OLEDB Provider gehen willst, dann ist genau das der Weg (auf jedem Client).

BTW Der SdfBrowser geht NICHT über OLEDB.

DieDolly 13. Mai 2019 20:58

AW: Zugriff auf SDF DB mit ADO
 
Zitat:

Der SdfBrowser geht NICHT über OLEDB.
Ich glaube das ist es was ich wissen musste. Diesen Weg über die beiliegenden DLLs möchte ich auch gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Seite 1 von 2  1 2   

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