Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Welcher Datenbankprovider für sqlite
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

Welcher Datenbankprovider für sqlite

beantworten | zitieren | melden

Datenbank ist sqlite

Welcher Datenbankprovider ist für sqlite zu empfehlen?
Ich nutze c# express 2010.

Wird dieser hier noch weiterentwickelt?
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

Im Erweiterungsmanager habe ich den dotconnect for sqlite gefunden, was haltet ihr von dem?
private Nachricht | Beiträge des Benutzers
m.knigge
myCSharp.de - Member

Avatar #avatar-3136.png


Dabei seit:
Beiträge: 178
Herkunft: Hannover

beantworten | zitieren | melden

Zitat von dott
Wird dieser hier noch weiterentwickelt?
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

Na logisch..... Vor allem seit dem das Ding offiziell bei sqlite.org gehostet und gewartet wird....

Bye,
Knick
Debuggers don't remove Bugs, they only show them in Slow-Motion.
private Nachricht | Beiträge des Benutzers
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

danke.
Laufen die entweder unter 32bit oder 64bit. Oder geht beides?

Also kann die Anwendung auf 32 und 64bit systemen laufen oder muss das dann bei jedem system angepasst werden?
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

du kannst dir die x86 oder x64 dlls laden. ich kann heute abend (gegen 19 uhr) mal etwas code posten um zu zeigen wie man zur laufzeit die richige dll laden kann.

wenn du solange nicht warten kannst dann nimm die x86 version und stell dein Build von Any CPU auf x86 um.
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

super vielen Dank für deine Hilfe.
Bin sehr auf deinen code gespannt. werde das andere auch mal testen.

Ich sehe gerade das die expressversion aus dem x86 Ordner gestartet wird, von daher kommt ja eigentlich eh nur die x86 Variante in Frage oder?

Dein Code würde mich aber trotzdem interessieren.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dott am .
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

Hallo,
Zitat von ProGamer
ich kann heute abend (gegen 19 uhr) mal etwas code posten um zu zeigen wie man zur laufzeit die richige dll laden kann

hier der Code

Felder:


		private Assembly _assembly;
		private dynamic _ConnectionInstance;

Im Konstruktor:

try
			{
				
				var tmpPath = Path.Combine( 
					Environment.GetFolderPath( 
						Environment.SpecialFolder.MyDocuments ), "Database", "MySqliteDB.s3db" );
				
				if ( !File.Exists( tmpPath ) )
				{
					var tmpPathSub = tmpPath.Substring( 0, tmpPath.LastIndexOf( '\\' ) );

					if ( !Directory.Exists( tmpPathSub ) )
					{
						Directory.CreateDirectory( tmpPathSub );
					}
					//Hier müsste man eine neue Datei erstellen, aber in dieser DB sind schon Testdaten
					File.Copy( Path.Combine( "Database", "MySqliteDB.s3db" ), tmpPath );
				}

				_connString = "Data Source=" + tmpPath + ";Version=3;";

				_assembly = Assembly.LoadFrom( IntPtr.Size == 4 ? "libs/x86/System.Data.SQLite.dll" : "libs/x64/System.Data.SQLite.dll" );
				CreateConnectionInstance();
			}
			catch
			{
				throw;
			}

private void CreateConnectionInstance()
		{
			_ConnectionInstance = _assembly.CreateInstance( "System.Data.SQLite.SQLiteConnection" );
			_ConnectionInstance.ConnectionString = _connString;
		}


Noch etwas Info:

Innerhalb des Projektes ist ein Ordner (libs) mit 2 Unterordnern (x86/x64) und die Dlls in den entsprechenden Versionen. Dazu noch die Dll SQLite.Interop.dll (nicht in den Unterordnern). Alle Dlls haben als Eigenschaft Copy Always gesetzt (Copy to Output Directory).

ich arbeite hier noch mit einer älteren sqlite Version (v3), kann also sein dass man die Interop dll nicht mehr in den neueren Versionen braucht.

falls fragen bestehen, kann ich die wohl erst morgen beantworten
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

Ich bin jetzt kurz vor dem Verzweifeln.
Ich habe eine Datenbank mit sqliteadmin erstellt. Sie liegt auf c:\ und heißt test.s3db

Hier ist mein Code, ich bekomme keine Fehlermeldung aber der scheint keine Verbindung aufzubauen, waran kann das liegen? ISt der Connectstring ok?


 try
            {
                
                string query = "Select * From Rollen";

                SQLiteConnection con = new SQLiteConnection("Data Source =c:\\test.s3db;Version=3;");
                con.Open();
                SQLiteDataAdapter da = new SQLiteDataAdapter();
                da.SelectCommand = new SQLiteCommand(query, con);
                DataTable dt = new DataTable();
                da.Fill(dt);
                con.Close();
                dataGridView1.DataSource = dt;
            }
            catch
            {
                textBox1.Text = "geht nicht";
            }
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

ich würde mal vorschlagen das Leerzeichen nach "Data Source" zu entfernen. (was eigt egal sein dürfte)
ansonsten stelle sicher dass deine Datenbank auch die Version 3 ist.

lade dir hier mal das Tool SmartDB runter (oder ein anderes was für dich ansprechender ist) und versuch dich mit dem Programm zur DB zu verbinden.

Falls nötig konvertiere deine DB in die Version 3.

und noch ein Tipp:

im Catch-Block definiere eine Exception variable und gebe die message in der TextBox aus

also so


catch (Exception ex)
{
    TextBox1.Text = ex.Message;
}

EDIT: vergiss das mit dem Tool, hatte überlesen dass du schon eins verwendest
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von ProGamer am .
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

Hallo,
ich habe jetzt mit diversen tools (sqlite2009, navicat, sqliteadmin)sqlite datenbanken erstellt, und mit keiner kann ich mich per c# verbinden, entweder sehe ich den Wald vor Bäumen nicht, ich finde auf jeden Fall den Fehler nicht.

Könnte es am Connectstring liegen?
private Nachricht | Beiträge des Benutzers
mabo
myCSharp.de - Member



Dabei seit:
Beiträge: 335

beantworten | zitieren | melden

Zitat von dott
Sie liegt auf c:\ und heißt test.s3db

Nur mal ins Blaue geraten, C:\ (bzw. die Systemplatte) ist ein geschütztes Verzeichnis.

Verschieb die Datei mal in einen Unterordner.

Allerdings müsste auch eine IOException auftreten...
private Nachricht | Beiträge des Benutzers
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

Ich habe den Pfad jetzt mal auf c:\test geändert, leider kein Erfolg.

Ich verstehe das nicht, dem Projekt muss man ja nur die sqlite.dll zuweisen, oder muss da noch was passieren?
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

Zitat von ProGamer
Noch etwas Info:

Innerhalb des Projektes ist ein Ordner (libs) mit 2 Unterordnern (x86/x64) und die Dlls in den entsprechenden Versionen. Dazu noch die Dll SQLite.Interop.dll (nicht in den Unterordnern). Alle Dlls haben als Eigenschaft Copy Always gesetzt (Copy to Output Directory).

nun, die SQLite.Interop.dll muss im Verzeichnis deiner Exe vorhanden sein und die System.Data.SQLite.dll muss referenziert werden.
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
dott
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

Oh mein Gott, das war es. vielen Dank
Jetzt geht es.
private Nachricht | Beiträge des Benutzers