Announcement

Collapse
No announcement yet.

SQLite ohne Insatllation - falsches Datenformat

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQLite ohne Insatllation - falsches Datenformat

    Windows 7(x64), VS 2015, .NET 4.6.1
    SQLite = sqlite-netFx46-binary-x64-2015-1.0.99.0.zip
    SQLite-Browser = http://sqlitebrowser.org/

    Ich habe eine Datenbank kasse.db erstellt mit dem o. g. Browser.

    Der Verweis funktioniert soweit, allerdings kommt die Fehlermeldung bei new SQLiteConnection():
    "Es wurde versucht, eine Datei mit einem falschen Format zu laden. (Ausnahme von HRESULT: 0x8007000B)"

    Einstellungen im Projekt ist "Any CPU".
    Die DLLs sind für 64bit.

    Warum entsteht hier ein Konflikt zu 32 oder 64bit?


    Hier der Code-Ausschnitt:
    [highlight=csharp]

    public string DatenbankName { get; set; }
    ...
    public bool DatenbankOeffnen()
    {
    if (string.IsNullOrEmpty(DatenbankName))
    {
    MessageBox.Show("Es fehlt die Übergabe der Eigenschaft für den Datenbanknamen.");
    return false;
    }

    try
    {
    _con = new SQLiteConnection();
    _con.ConnectionString = string.Format("Data Source={0};Version=3;New=False;Compress=True;", DatenbankName);
    _con.Open();

    return true;
    }
    catch (Exception ex)
    {
    string s = string.Format("Die Datenbank {0} konnte nicht geöffnet werden.\r\n{1}\r\n{2}", DatenbankName, ex.Message, ex.StackTrace);
    MessageBox.Show(s, "Fehler beim Öffnen der Datenbank", MessageBoxButton.OK, MessageBoxImage.Error);
    return false;
    }

    }
    [/highlight]

    Beim Installieren von SQLite kommt dann folgender Fehler
    ...
    Installer.exe: #050 @ 2016.02.10T14:28:35.5965459: IsEf6Supported: False
    Installer.exe: #051 @ 2016.02.10T14:28:35.5965459: IsEf6AssemblyGlobal: False
    Installer.exe: #052 @ 2016.02.10T14:28:35.5975460: UseEf6Provider: False
    Installer.exe: #053 @ 2016.02.10T14:28:35.5975460: GetCoreAssemblyName: "System.Data.SQLite, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
    Installer.exe: #054 @ 2016.02.10T14:28:35.5985461: GetLinqAssemblyName: "System.Data.SQLite.Linq, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
    Installer.exe: #055 @ 2016.02.10T14:28:35.6005463: GetEf6AssemblyName: <null>
    Installer.exe: #056 @ 2016.02.10T14:28:35.6015464: GetDesignerAssemblyName: "SQLite.Designer, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
    Installer.exe: #057 @ 2016.02.10T14:28:35.6015464: GetInvariantName: "System.Data.SQLite"
    Installer.exe: #058 @ 2016.02.10T14:28:35.6025465: GetConfigInvariantName: "System.Data.SQLite"
    Installer.exe: #059 @ 2016.02.10T14:28:35.6035466: GetProviderInvariantName: "System.Data.SQLite"
    Installer.exe: #060 @ 2016.02.10T14:28:35.6035466: GetFactoryTypeName: "System.Data.SQLite.SQLiteFactory"
    Installer.exe: #061 @ 2016.02.10T14:28:35.6045467: GetProviderAssemblyName: "System.Data.SQLite, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
    Installer.exe: #062 @ 2016.02.10T14:28:35.6065469: Configuration.Process: No actual changes will be made to this system because "what-if" mode is enabled.
    Installer.exe: #063 @ 2016.02.10T14:28:35.6075470: TraceOps.ShowMessage: Cannot continue, the "confirm" option is not enabled.
    Ich habe schon die Foren durchsucht und auch ähnliches gelesen. Anscheinend funktioniert nur x86. Das würde ich ungern nehmen.

    Vielen Dank für Eure Hilfe

  • #2
    Any CPU heißt der .Net Prozess wird sich dem OS anpassen und entweder in 32bit oder 64bit laufen. Anpassen heißt auch das der Prozess unter gewissen Umständen in 32bit läuft auch wenn das OS ein 64Bit OS ist.
    Die Bittigkeit kann man nicht mischen. Und wenn dein .Net Prozess sich entschieden hat in der 32bit Welt zu laufen kann man nix laden das nur 64bit kann.

    Wenn du weißt das deine Anwendung nur 64bit kann wegen der Abhängigkeit auf etwas das nur 64bit kann solltest du die auch auf 64bit setzen und nicht auf "Any CPU".


    Beim Installieren von SQLite kommt dann folgender Fehler
    Du hast doch scheinbar schon gegen SQLite deine Anwendung programmiert? Also ist SQLite installiert.
    Es ist sicherlich nicht so gedacht den Installer von SQLite auf einem Ziel System auszuführen. Sondern du solltest einfach nur die passenden Dateien von SQLite mit deiner Anwendung deployen.
    Ist doch schön beschrieben welche das sind.
    Zuletzt editiert von Ralf Jansen; 10.02.2016, 19:17.

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      Du hast doch scheinbar schon gegen SQLite deine Anwendung programmiert? Also ist SQLite installiert.
      Es ist sicherlich nicht so gedacht den Installer von SQLite auf einem Ziel System auszuführen. Sondern du solltest einfach nur die passenden Dateien von SQLite mit deiner Anwendung deployen.
      Ist doch schön beschrieben welche das sind.
      Ja, ich habe schon gegen SQLite programmiert. Es hat auch bisher immer funktioniert.

      Nur dieses mal nicht mehr.

      Ich hatte auf diesem Rechner noch kein SQLite installiert und habe nur die DLLs für .NET 4.6. genommen ohne zu Installieren.

      Ich habe alle DLLs und Verweise, doch er wirft eben den o. g. Fehler immer wieder aus. Deshalb hatte ich versucht SQLite mit dem Installer zu installieren (hier bekomme ich auch dauernd Fehlermeldungen).

      Ich melde mich, sobald ich Ergebnisse habe.

      Danke für die rasche Antwort.
      Zuletzt editiert von Lerando; 11.02.2016, 13:03.

      Comment


      • #4
        Lösung.

        In den Projekteigenschaften (Hauptprojekt) muss die Signierung von 32 Bit bevorzugen deaktiviert sein.

        Dann funktioniert es auch.

        Vielen Dank für die Unterstützung.

        Comment

        Working...
        X