Was ist der richtige Weg, um eine lokale Datenbankdatei zu erstellen und dann die App damit zu verbinden? Ich möchte, dass es funktioniert, auch wenn Sie den Speicherort des Projektordners ändern.Alle Daten aus der Datenbank werden gelöscht, wenn die Anwendung geschlossen wird.
Richtig weiß, was ich tue ist: Projekt -> Neuen Artikel hinzufügen -> Service-basierte Datenbank und ich erstellen einen und dann gehe ich zu Daten -> Neue Datenquelle hinzufügen, füge ich die erstellte Datenbank und ich bekomme die Verbindung Zeichenfolge.
Ok, alles gut, ich kann es verbinden, wie ich es wünsche, aber alle meine Daten werden aus der Datenbank gelöscht, wenn ich die Anwendung schließe (nicht immer).
Zum Beispiel dieser Code:
SqlConnection c = new SqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True;User Instance=True");
c.Open();
SqlCommand cmd;
cmd = new SqlCommand("CREATE TABLE Persons (id int primary key, nume char(20), age int)");
cmd.ExecuteNonQuery();
cmd = new SqlCommand("INSERT INTO Persons VALUES (@id, @name, @age)", c);
cmd.Parameters.AddWithValue("@id", 1);
cmd.Parameters.AddWithValue("@name", "Catalin");
cmd.Parameters.AddWithValue("@age", 20);
cmd.ExecuteNonQuery();
Ich betreibe es erstmals die Tabelle und fügen Sie ein Element, um es zu erstellen und dann, dann, wenn ich es zum zweiten Mal ohne sqlcommand ausführen, um die Tabelle zu erstellen Personen, es sagt mir, dass es keine Personen Objekt, aber wenn ich das zweite Mal das Projekt mit dem gleichen Code läuft, sagt mir, dass es bereits ein Personen Objekt ...
Ich benutze Visual C# Express Edition 2010.
Starten Sie Ihr Programm, indem Sie auf "Debuggen starten" klicken und befindet sich Ihre .mdf im Ordner "Bin"? Wenn ja, wird vielleicht Ihre .mdf Datei jedes Mal überschrieben, wenn Sie Ihr Programm erstellen/ausführen. –
[Marc Antwort] (http://Stackoverflow.com/a/36245969/447156) ist ganz richtig. Auch schlage ich vor, ['using' Statement] (https://msdn.microsoft.com/en-us/library/yh598w02.aspx) zu verwenden, um Ihre Verbindung und Ihren Befehl automatisch zu entfernen, und es wäre besser,' Add' Methode zu verwenden mit Angabe des Parametertyps und dessen Größe anstelle von 'AddWithValue', da [it _might_ manchmal unerwartete Ergebnisse generiert] (http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-) addwithvalue-bereits /). –