Laden...

Doppelte Datensätze verhindern

Erstellt von Snowwolf3000 vor 19 Jahren Letzter Beitrag vor 19 Jahren 3.438 Views
Snowwolf3000 Themenstarter:in
140 Beiträge seit 2004
vor 19 Jahren
Doppelte Datensätze verhindern

Hallo,
ich wollte ein Programm schreiben, welches die in einen Verzeichnis gespeicherten Albennamen(einfach nur die Unterordnernamen) in eine Datenbank schreibt. Mein Problem ist wenn man das Verzeichnis mehrmals einliest, dass er die Alben doppelt in die Datenbank schreibt. Das Programm sollte also erstmal das Dataset durchsuchen ob der Albumname schon vorhanden ist und nur wenn nicht soll er es reinschreiben. Und das bekomm ich nicht hin. Wäre dankbar wenn ihr mir da etwas helfen könntet

(hab die Funktion zum durchsuchen des Ordners noch nicht implemntiert, weshalb erstmal ein String als Albumname herhalten muss)

	
	                        string SelectCommandString = "SELECT * FROM album";
				OleDbDataAdapter adapter = new  OleDbDataAdapter(SelectCommandString,con);
				DataSet ds = new DataSet();
				//alle schon vorhandeneAlbumeinträge aus der DB holen
				adapter.Fill(ds,"Album");

				string insertCommandString = "INSERT INTO Album(Name,GenreNr) VALUES (@Name,@GenreNr)";
				OleDbCommand insertCommand = new OleDbCommand();
				insertCommand.CommandText = insertCommandString;
				insertCommand.Connection = con;
				insertCommand.Parameters.Add(new OleDbParameter("@Name",OleDbType.VarChar,100,"Name"));
				insertCommand.Parameters.Add(new OleDbParameter("@GenreNr",OleDbType.Integer,4,"GenreNr"));
				adapter.InsertCommand = insertCommand;				

				//Neue DataRow erzeugen				
				DataRow neueReihe = ds.Tables["Album"].NewRow();
				neueReihe["Name"] = "The Hives - Tyrannosaurus Hives";
				neueReihe["GenreNr"] = 1;
				ds.Tables["Album"].Rows.Add(neueReihe);
				adapter.Update(ds,"Album");	


Gruß,
Snowwolf

4.207 Beiträge seit 2003
vor 19 Jahren

Hallo,

nach dem Ansatz, eine Funktionalität so weit unten wie möglich zu realisieren, hat dieses Problem meiner Meinung nach nichts in der Anwendungslogik verloren, sondern gehört in die Datenbank.

Hier definierst Du eine oder mehrere Spalten (beispielsweise den Titel des Albums verknüpft mit dem Namen des Künstlers) als UNIQUE, und schon schlägt das INSERT fehl 🙂. Dann musst Du in Deinem Programm nur noch die geworfene Exception richtig abfangen, und alles ist in Butter 🙂.

Viele Grüße,

Golo

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

Snowwolf3000 Themenstarter:in
140 Beiträge seit 2004
vor 19 Jahren

Danke!

Der Ansatz das in die Datenbank zu verschieben ist wirklich viel besser. Habs gerade ausprobiert und funktoniert nun so wie ichs mir vorgestellt habe.