Benutzer mit den meisten Antworten
Linq Hilfe

Frage
-
Guten Abend,
in meinem kleinen Tool benötige ich eine kleine Datenbank bzw. Datenspeicher, in der ein paar Daten gesichert werden sollen.
Zum Beispiel den Filenamen und das Datum. Ich habe das ganze schon einmal beim Windows Phone gemacht, aber ist zu lange her :(
Folgendes habe ich vor: Ich möchte in der DB den FileNamen und andere Daten sichern, dazu habe ich die class DB erstellt. Aus einem WPF Window möchte ich nun aus der TextBox den Filenamen auslesen und sichern. Aber wie?
Ich habe eine Klasse erstellt, mit dem Table
[Table(Name = "Files")] class DB { private string _FileID; [Column(IsPrimaryKey = true, Storage = "_FileID")] public string FileID { get { return this._FileID; } set { this._FileID = value; } } }
...
Habe ab hier keinen blassen schimmer, wie ich die Verbindung aufbaue, um somit Daten zu sichern.
Antworten
-
Ja, das hilft mir schon ;)
Da es größere Datenmengen werden können, würde ich auch eine DB nutzen. Grundsätzlich solltest du dich erstmal wieder mit dem DB-Zugriff vertraut machen. Dazu gibt es noch mehr im Internet, als nur mein oben verlinkten MSDN Artikel. Die exakte Steuerung hängt auch von dem Datenbankanbieter ab.
Angenommen, das die Datenbankanbindung kein Problem darstellt. Beim Laden eines Vorhandenen Projekts musst du eine SQL-Abfrage auf die Datenbank ausführen. Je nach System erhählst du dann einen Reader, aus dem du die Infos bekommst. Dort erstellst du dann deine Objekte, die du haben willst. Um dir mal ein Beispiel zu zeigen:
string pageId = HttpContext.Current.Request.Url.PathAndQuery; string connString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;//ConnectionString string sqlQuery = @"SELECT * FROM Table1 WHERE Id LIKE @Id";//In wirklichkeit natürlich etwas anders ;) List<CommentItem> items = new List<CommentItem>(); using (SqlConnection sqlConn = new SqlConnection()) { sqlConn.ConnectionString = connString; using (SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn)) {
cmd.Parameters.Add(new SqlParameter("Id", pageId));//Parameter hinzufügen
sqlConn.Open();//Verbindung öffnen using (SqlDataReader reader = cmd.ExecuteReader())//Reader ausführen { while (reader.Read())//Solange ausführen, wie gelesen werden kann { items.Add(new CommentItem() { UserName = reader.GetString(reader.GetOrdinal("Name")), UserComment = reader.GetString(reader.GetOrdinal("Comment")),
//... }); } } } }So könnte es bei einem MS SQL-Server aussehen. Am Ende erhalte ich eine Liste von CommentItem-Objekten. Du müsstest das dann auf deine DB-Objekte anpassen.
Beim Abspeichern läuft es eigentlich gleich. Du führst einen Command aus, der die Daten in die DB schreibt. Hier kannst du dann den Reader weg lassen, da du keine informationen auslesen möchtest.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Mittwoch, 27. November 2013 16:09
- Als Antwort markiert Ciprian Bogdan Mittwoch, 27. November 2013 16:30
Alle Antworten
-
Hallo,
es gibt einige Arten um Daten zu sichern. Nicht nur über eine Datenbank. Altrernativen wären Beispielsweise das Einstellungsmenü von C# oder jede andere Art der Serialisierung.Gibt es denn zur Laufzeit mehrere Instanzen von DB in einer Liste?
wenn ja
dann ist eine DB warscheinlich die beste Variante. Nun ist aber die Frage welches System du nutzen willst?
Algemeine infos dazu gibt es hier.wenn nein
da reicht auch locker eine Einstellung von C# aus, da du nur einen Datensatz hast. Mehr dazu hier.LINQ ist eine SQL-Ähnliche Abfragesprache für C# (und andere .NET Sprachen).
Um von der GUI zugriff auf eine DB-Instanz zu bekommen, hängt es von deinem Vorhaben ab. bei mehreren Datensätzen musst du dir deinen einen irgendwie heraus suchen und bei nur einem Datensatz kannst du diesen einfach benutzen. (MeineInstanz.FileID).
Versuche mal dein Vorhaben näher zu beschreiben, denn noch ist es mir etwas unverständlich, was genau du vor hast.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. -
Hallo,
danke für die schnelle Antwort. Also mein Vorhaben:
- Bei Programm start soll der Nutzer (also ich :D) eine Auswahl haben, ob neues oder vorhandenes Projekt. Das vorhandene Projekt soll aus einer Datenbank oder aus den Einstellung von C# raus geladen werden.
- Der Datensatz des Projekts könnte durchaus groß werden im Verlaufe der Zeit.
- Zur Laufzeit des Programms können neue Projekte angelegt werden bzw. erweitert werden, daher schien mir die Lösung mit einer DB als einzig mögliche. Wie gesagt, lange her und einiges vergessen.
- Das Projekt soll selbstverständlich gesichert werden können.
......................
ich weiß nur nicht ob dir das weiterhilft?
-
Ja, das hilft mir schon ;)
Da es größere Datenmengen werden können, würde ich auch eine DB nutzen. Grundsätzlich solltest du dich erstmal wieder mit dem DB-Zugriff vertraut machen. Dazu gibt es noch mehr im Internet, als nur mein oben verlinkten MSDN Artikel. Die exakte Steuerung hängt auch von dem Datenbankanbieter ab.
Angenommen, das die Datenbankanbindung kein Problem darstellt. Beim Laden eines Vorhandenen Projekts musst du eine SQL-Abfrage auf die Datenbank ausführen. Je nach System erhählst du dann einen Reader, aus dem du die Infos bekommst. Dort erstellst du dann deine Objekte, die du haben willst. Um dir mal ein Beispiel zu zeigen:
string pageId = HttpContext.Current.Request.Url.PathAndQuery; string connString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;//ConnectionString string sqlQuery = @"SELECT * FROM Table1 WHERE Id LIKE @Id";//In wirklichkeit natürlich etwas anders ;) List<CommentItem> items = new List<CommentItem>(); using (SqlConnection sqlConn = new SqlConnection()) { sqlConn.ConnectionString = connString; using (SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn)) {
cmd.Parameters.Add(new SqlParameter("Id", pageId));//Parameter hinzufügen
sqlConn.Open();//Verbindung öffnen using (SqlDataReader reader = cmd.ExecuteReader())//Reader ausführen { while (reader.Read())//Solange ausführen, wie gelesen werden kann { items.Add(new CommentItem() { UserName = reader.GetString(reader.GetOrdinal("Name")), UserComment = reader.GetString(reader.GetOrdinal("Comment")),
//... }); } } } }So könnte es bei einem MS SQL-Server aussehen. Am Ende erhalte ich eine Liste von CommentItem-Objekten. Du müsstest das dann auf deine DB-Objekte anpassen.
Beim Abspeichern läuft es eigentlich gleich. Du führst einen Command aus, der die Daten in die DB schreibt. Hier kannst du dann den Reader weg lassen, da du keine informationen auslesen möchtest.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Mittwoch, 27. November 2013 16:09
- Als Antwort markiert Ciprian Bogdan Mittwoch, 27. November 2013 16:30
-
Hi,
ist dieser Thread noch aktuell ? Bist Du hier inzwischen weitergekommen ?
Danke und Gruß,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.