Daten mit c# aus SQL Compact auslesen! Daten mit c# aus SQL Compact auslesen!
Ergebnis 1 bis 15 von 15
  1. Hallo,

    nachdem ich kleinere Probleme bei der Erstellung von Anwendungen für mein MobilePhone überwunden habe, möchte ich nun Daten aus einer SQL Compact DB ausgeben.

    Die DB habe ich über VS2008 erstellt und an mein Projekt angebunden. Ich möchte jetzt eigentlich nur auf einen Button klicken und damit einen SQL anstoßen, der ein Wert aus der DB ermittelt, den ich dann in einem Textfeld wieder anzeigen lasse.

    Es gibt den Button, das Textfeld, die DB... eine Connection muss ich nicht mehr direkt selber aufbauen, das hat VS bereits gemacht? Wie gebe ich Daten aus?

    Sorry für die dumme Frage, ich bin gerade ein wenig planlos.

    eigentlich möchte ich jetzt hier den SQL einfügen:

    privatevoid button2_Click(object sender, EventArgs e)
    {
    //Button zur DB-Ausgabe
    textBox3.Text = SQL;
    }

    ... gibt es hierfür ein kleines Tutorial?

    Was mich ein wenig stört ist die Tatsache, dass ich bei VS den Überblick verliere zwischen dem, was VS an Code angelegt hat und was ich an zusätzlichen Code hinterlegen muss... ich hätte jetzt z.B. vermutet noch eine Connection zur DB aufbauen zu müssen...

    Hat jemand einen Tipp für mich?

    Gruß
    Silver
    0
     

  2. Unregistriert Gast
    Hallo,

    ich habe es jetzt einfach mal mit einer connection versucht und möchte die DB per Insert füllen, nur werden die Daten nicht gespeichert:

    private void button1_Click(object sender, EventArgs e)
    {
    SqlCeConnection conn = null;

    try
    {
    conn = new SqlCeConnection("Data Source = db.sdf");
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "INSERT INTO test(wert) VALUES (111)";
    }
    catch (Exception ex)
    {
    MessageBox.Show("Es ist ein Fehler aufgetreten : " + ex.Message);
    }
    }

    ... ist der Schritt mit der Connection falsch? Warum werden die Daten nicht gespeichert. Ich erhalte keine Fehlermeldung.

    Gruß
    Silver
    0
     

  3. Ein command muss dann noch ausgeführt werden.
    ExecuteNonQuery
    Dann noch die Verbindung schliessen.
    Schau noch die anderen Execute Methoden an (z.B. für selects).
    3
     

  4. Hallo,

    danke für den Tipp. Das ich den Execute vergessen hatte habe ich gestern auch gemerkt... wie dumm.

    Trotzdem will mein kleiner Insert nicht funktionieren. Ich (der Anfänger) finde auch keinen Fehler mehr:

    SqlCeConnection conn = null;

    try
    {
    conn = new SqlCeConnection("Data Source = test.sdf");

    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "INSERT INTO tabelle(wert) VALUES (112)";
    cmd.ExecuteNonQuery();

    conn.Close();

    }
    catch (Exception ex)
    {
    MessageBox.Show("Es ist ein Fehler aufgetreten : " + ex.Message);
    }

    Das sollte doch korrekt sein oder?

    Gruß
    Silver
    0
     

  5. Sollte richtig sein. Du Schaust schon in der test.sdf auf dem Emulator (und nicht im VisualStudio) nach, ob das Insert funktioniert hat?
    1
     

  6. Zitat Zitat von heliosdev Beitrag anzeigen
    Sollte richtig sein. Du Schaust schon in der test.sdf auf dem Emulator (und nicht im VisualStudio) nach, ob das Insert funktioniert hat?
    Wahrscheinlich liegt genau da mein Fehler. Ich nutze VS08 erst seit zwei Wochen und bin da noch nicht so ganz "durchgestiegen". Den Code teste ich mit F5, ich denke, dass ist der Emulator. In dem sich öffnenden Fenster sehe ich dann die Form mit meinem Button, der den Insert ausführt. Ich denke, da bewege ich mich noch in der Emulation.

    Allerdings schaue ich danach doch über VS08 in die DB, aktualisiere die Tabellenansicht und suche nach meinem Insert (Server-Explorer -> Datenverbindungen, DB anklicken, Tabelle auswählen, rechte Maustaste -> Tabellendaten anzeigen). Ich nehme an, nach Deiner Vermutung ist dieser Weg nicht ganz korrekt?

    Wie kann ich mir über den Emulator den Datenbankstand anzeigen lassen?

    Gruß
    Silver
    0
     

  7. Auf dem Emulator wird das Programm in "/Program Files/<Programm Name>" (Programme, falls auf Deutsch) laufen. Und dort wird auch die DB sein. Nach Beenden des Programms die DB von dort auf die Speicherkarte des Emulators kopieren, um dann auf dem Desktop Zugriff darauf zu haben. (z.B. SQL Server Management Studio Express als freies Tool, um die Datenbank anzuschauen, gibt's auch als cab fürs Device, kannst auch VS einsetzen)
    Speicherkarte im Emulator erstellen:
    Im Emulatorfenster (nicht im Emulator selber) auf File-Configure... und dann zu unterst einen Ordner auf der Festplatte auswählen (habe mir z.B. einen Ordner namens Speicherkarte erstellt). Das ist nun die Speicherkarte des Emulators und dient u.a. zum Austausch von Dateien.
    (Am besten den Emulator neu starten die Speicherkarte setzen, den Emulator schliessen und den Zustand speichern.)
    1
     

  8. Hallo,

    ich muss nochmal nachfragen, sorry.

    Kann ich den Emulator auch für eine Entwicklung nutzen, die ich als "Windows-Form" und nicht für ein mobiles Gerät geschrieben habe? Nachdem ich nämlich Probleme mit der DB für meine mobile Anwendung hatte, habe ich zu testzwecken nur eine kleine Form, geschrieben in C#, erstellt um mit einem Button ein Insert auszuführen. Einfach um zu schauen, ob der Insert funktioniert.

    Wie starte ich denn den Emulator? Den einzigen Emulator, den ich gefunden habe, emuliert nämlich nur meine mobile Anwendung.

    Ich war davon ausgegangen, dass die test.sdf Datei meine Datenbank darstellt und in dieser Datei auch mein Insert gespeichert werden würde, ist doch korrekt oder?

    Gruß
    Silver
    0
     

  9. Man muss ein mobiles Projekt erstellen. Beim Start aus VS (F5) wird das Programm im Emulator (kann aus einer ComboBox ausgewählt werden professional, standard oder auch ein angeschlossenes Gerät) gestartet. Dabei wird das exe (und in Deinem Fall auch die leere DB) auf den Emulator kopiert (deployment).
    Bei einer WindowsForm muss man darauf achten, dass man das compact und nicht das desktop .net framework referenziert!
    Die DB im VS Projekt wird leer bleiben, da die DB im Emulator gebraucht wird. Man kann natürlich im VS Tabellen und Werte erstellen, aber alle Änderungen, die mit der Applikation gemacht werden, sind auf der DB im Emulator und muss dann via Speicherkarte zurückkopiert werden.
    2
     

  10. Danke für die Mühe, so langsam kommt Licht ins Dunkle. Ich werde mal versuchen die Tipps umzusetzen.

    Gruß
    Silver
    0
     

  11. Hallo,

    ich bin jetzt wieder einen kleinen Schritt weiter und habe leider ein neues Problem, bzw. eine Frage.

    Mittlerweile finde ich meine DB über den Emulator auf dem Device. Es ist sogar schon ein Tool dabei mit dem ich direkt auf die DB zugreifen kann. Wenn ich jetzt allerdings meinen oben stehenden Insert ausführe bekomme ich eine Fehlermeldung. Der Fehler liegt beim Connect, die Pfadangabe zur DB scheint nicht korrekt zu sein. Meine Pfadangabe bezieht sich auf meinen Laptop, die DB müsste ja aber auf dem mobile device liegen und somit auch auf diese zugreifen. Wie ermittle ich den relativen Pfad?

    Der Fehler wird sofort bei dem conn.open(); geworfen und ich bin der festen Überzeugung, dass die DB nicht gefunden wird.

    hier mein Versuch:

    SqlCeConnection conn = null;

    try
    {
    //conn = new SqlCeConnection("Data Source =verbrauch_db.sdf");

    String connectionString = @"\Program Files\SmartDeviceProjekt1\verbrauch_db.sdf";
    conn = new SqlCeConnection(connectionString);

    conn.Open();
    }

    catch (Exception ex)
    {
    MessageBox.Show("Fehler bei der Verbindung zur Datenbank: " + ex.Message);
    }


    Gruß
    Silver
    0
     

  12. Folgende Methode liefert den Pfad:
    Code:
    public static string GetApplicationPath()
    {
        return Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
    }
    und für den connection string dann:
    Code:
    string connectionString = string.Format(@"Data Source = {0}\{1}", GetApplicationPath(), "verbrauch_db.sdf");
    (Assembly ist im System.Reflection und Path im System.IO namespace.)
    3
     

  13. Zitat Zitat von heliosdev Beitrag anzeigen
    Folgende Methode liefert den Pfad:
    Code:
    public static string GetApplicationPath()
    {
        return Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
    }
    und für den connection string dann:
    Code:
    string connectionString = string.Format(@"Data Source = {0}\{1}", GetApplicationPath(), "verbrauch_db.sdf");
    (Assembly ist im System.Reflection und Path im System.IO namespace.)

    ... es klappt....

    Ich habe gerade Deine Function eingebunden, die Anwendung über den Emulator gestartet, ausgeführt und auf die alte Fehlermeldung gewartet... kam aber nicht ... habe dann gleich in die DB geschaut und meine Inserts gefunden. Vielen Dank für die kompetente Hilfe...

    Werde mir gleich mal den Pfad über die Function ausgeben lassen und schauen wo mein Fehler lag.

    Eine kleine Frage habe ich aber noch: Du hast geschrieben, dass Path im System.IO namespace liegt. Ich habe nur System.IO importiert, ohne den Zusatz namespace. namespace müsste der Bereich für den Quellcode sein (ich weiß nicht wie ich es anders ausdrücken soll), diesen muss ich beim using nicht auch mit angeben oder?

    Vielen Dank nochmal.

    Gruß
    Silver
    0
     

  14. Sehr gut!

    Zum namespace:
    System.Reflection, resp. System.IO sind namespaces.
    Also

    using System.IO;

    gibt an, dass man diesen namespace braucht und somit die darin enthaltenen Klassen 'direkt', also ohne 'System.IO.' brauchen kann.
    (z.B. Path.GetDirectoryName statt System.IO.Path.GetDirectoryName)
    1
     

  15. Ok, verstanden, Danke

    Gruß
    Silver
    0
     

Ähnliche Themen

  1. Hilfe!!! daten auf dem handy per pc auslesen
    Von steried im Forum Sony Ericsson Xperia X10
    Antworten: 1
    Letzter Beitrag: 01.05.2010, 16:04
  2. T-Mobile GER Compact V original ROM auslesen
    Von Quo-Vadis im Forum Touch Diamond 2 ROM Upgrade
    Antworten: 9
    Letzter Beitrag: 14.06.2009, 12:19
  3. GPS daten aus smartphone lesen
    Von Adgendino im Forum Plauderecke
    Antworten: 3
    Letzter Beitrag: 29.12.2007, 10:30
  4. SQL CE 2.0 Server mit EVC benutzen?
    Von SkySurfer im Forum Programmieren
    Antworten: 0
    Letzter Beitrag: 10.05.2006, 13:06

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

c# SQL Compact tutorial

c# sql compact

sql Compact c#

c# sdf tutorial

c# sql tutorialc# sql auslesenc# sql datenbank auslesenc# sqlcompactc# sql tabelle auslesenc# sql cesql compact tutorial c#c# sdf auslesensql auslesen c#c# compact sqlc# sql server compact tutorialsql compact c# tutorialc sql compact tutorialSQL Compact in c#c# sql ausgebenwindows mobile 6.5 sdf insertpc daten auslesen c #c# sql ce tutorialwindows mobile sql compactc# sqlsqlcompact tutorial

Stichworte