Nofi Geschrieben 8. August 2006 Teilen Geschrieben 8. August 2006 Ich würde gerne prüfen ob mein Insert erfolgreich war, wie mache ich das? Gibt es da eine Methode (arbeite mit VS 2005 C# und einer Access DB). Mein Code um den Eintrag einzufügen lautet (funktioniert auch!): private void btn_typHinzufügen_Click(object sender, EventArgs e) { string typName = txt_typName.Text; this.typesTableAdapter.Insert(typName); } Danke im voraus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
USF Geschrieben 9. August 2006 Teilen Geschrieben 9. August 2006 Du koenntest doch die Daten in der Datenbank suchen lassen. Wenn sie gefunden werden, sind sie ja drin? Den Code fuer C# kenne ich dafuer leider nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gaschi Geschrieben 9. August 2006 Teilen Geschrieben 9. August 2006 Wenn du mit einer Access DB arbeitest, könntest du doch einfach mit Access darauf zugreifen um die Inhalte anzeigen zu lassen, oder sehe ich da was falsch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kuwu Geschrieben 9. August 2006 Teilen Geschrieben 9. August 2006 also ich kenn mich jetzt nur mit VB .Net aus... aber kannst du um deinen Code nicht eine Fehlerbehandlung bauen? Bei VB geht das z.B. mit try...catch...end try. Wenn der INSERT nicht erfolgreich war müsste er ja dann in den "catch"-Zweig laufen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nofi Geschrieben 9. August 2006 Autor Teilen Geschrieben 9. August 2006 Du koenntest doch die Daten in der Datenbank suchen lassen. Wenn sie gefunden werden, sind sie ja drin? Das könnte ich wohl, aber das wäre doch umständlicher als einfach eine Methode zu nehmen die das macht. Ich weiß mittlerweile auch das es eine gibt, nur weiß ich nicht wie man sie einsetzt (und per Designer schon gar nicht). Wenn du mit einer Access DB arbeitest, könntest du doch einfach mit Access darauf zugreifen um die Inhalte anzeigen zu lassen, oder sehe ich da was falsch? Ja das geht auch, aber ich will ja eine Methode haben die mir diesen Vorgang abnimmt, ich will die Inhalte auch gar nicht anzeigen lassen, nur wissen ob halt in die DB eingetragen wurde oder nicht. Bei VB geht das z.B. mit try...catch...end try. Wenn der INSERT nicht erfolgreich war müsste er ja dann in den "catch"-Zweig laufen. Das könnte funktionieren. Habe in C# auch try and catch, werde das gleich Mal ausprobieren. Danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nofi Geschrieben 9. August 2006 Autor Teilen Geschrieben 9. August 2006 Kuwus Vorschlag hat geklappt! Vielen Dank nochmal. Es war so einfach, dass ich da nicht selbst drauf gekommen bin . Hier der Code für alle die daran interessiert sind: private void btn_typHinzufügen_Click(object sender, EventArgs e) { bool iSucceeded = insert(); if (iSucceeded == true) { MessageBox.Show("erfolgreich"); } else { MessageBox.Show("nicht"); } public bool insert() { string typName = txt_typName.Text; try { this.typesTableAdapter.Insert(typName); return true; } catch { return false; } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Spachten Geschrieben 10. August 2006 Teilen Geschrieben 10. August 2006 *grübel* also try..catch fängt lediglich programmfehler ab. wenn die db mist macht, muss das die anwendung nicht unbedingt mitkriegen. die einzigen fehler, die du damit abfängst sind, wenn die connection zur db weg ist oder die tabelle nicht mehr existiert(gut bei ner access-db ist das relativ unwahrscheinlich ). ob die daten bei der übertragung verlorengegangen sind, merkst du aber wirklich nur, wenn du nach der übertragung nachguckst ob alles da ist. mfg Spachten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nofi Geschrieben 10. August 2006 Autor Teilen Geschrieben 10. August 2006 *grübel* also try..catch fängt lediglich programmfehler ab. wenn die db mist macht, muss das die anwendung nicht unbedingt mitkriegen. die einzigen fehler, die du damit abfängst sind, wenn die connection zur db weg ist oder die tabelle nicht mehr existiert(gut bei ner access-db ist das relativ unwahrscheinlich ). ob die daten bei der übertragung verlorengegangen sind, merkst du aber wirklich nur, wenn du nach der übertragung nachguckst ob alles da ist. Wie kann ich denn Fehler, die die DB macht abfangen? Bzw. was kann eine DB denn alles so falsch machen abgesehen von der connection oder einer nicht existierenden Tabelle? (Mein Programm soll später an den sql server 2005 'geknüpft' werden, mit Access übe ich nur.) Das 'Verlorengehen' von Daten kann man also gar nicht als Fehler abfangen oder nur mit try and catch nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BlackCoin Geschrieben 10. August 2006 Teilen Geschrieben 10. August 2006 moin, Eine Insert Anweisung wird doch normalerweise mit ExecuteScalar oder halt zur not mir executenonquery gemacht ExecuteScalar gibt dir die erstel zeile zurück also das insert war in ordnung executenonquery gibt die anzahl der veränderten zeilen zurück also ebenfalls wenn > 0 dann in ordnung vileicht hilft es weiter wenn nicht dann gib uns mal ein paar mehr infos mfg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nofi Geschrieben 14. August 2006 Autor Teilen Geschrieben 14. August 2006 Eine Insert Anweisung wird doch normalerweise mit ExecuteScalar oder halt zur not mir executenonquery gemacht ExecuteScalar gibt dir die erstel zeile zurück also das insert war in ordnung executenonquery gibt die anzahl der veränderten zeilen zurück also ebenfalls wenn > 0 dann in ordnung Damit arbeite ich z.B. gar nicht, ich weiß auch nicht wie man das macht. Ich habe meine ganze Anwendung mit dem DataSet Designer geschrieben. Man schreibt da halt seine Abfrage, welche in eine Methode 'gebettet' wird und führt diese anschließend aus. Ist halt wesentlich einfacher und schneller als das alles per Hand zu machen, aber wie ich sehe hat das ganze auch Nachteile. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevHB Geschrieben 14. August 2006 Teilen Geschrieben 14. August 2006 Hi, (Mein Programm soll später an den sql server 2005 'geknüpft' werden, mit Access übe ich nur.) Das ist ein falscher Ansatz. Mach das gleich mit dem SQL Server arbeiten, weil Du damit wesentlich mehr Aufgaben der DB überlassen kannst und die Art der Programmierung sich wesentlich von der Arbeit mit Access unterscheidet, Stichworte hierfür sind: StoredProcedures, Trigger. Alles was Du unter Access gemacht hast, lässt nur mit viel Aufwand auf den SQL Server übertragen, zudem ändert sich mit dem SQLServer das Programmierkonzept wesentlich ! Alleine durch SPs und Trigger, da wesentliche Aufgaben dem DBMS überlassen werden. So sollte man beim SQLServer z.B. Abfragen (egal ob INSERT, UPDATE oder DELETE) auf dem Server als SP hinterlegen und mit Parametern aus der Anwendung anstossen, Rückgabewerte/Ergebnisse event. noch verarbeiten lassen und an die Anwendung zurückgeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 21. August 2006 Teilen Geschrieben 21. August 2006 adodb recordset execute funktion gibt die anzahl der zeilen zurück... jenachdem was du insertest brauchst du die ja nur zu überprüfen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevHB Geschrieben 21. August 2006 Teilen Geschrieben 21. August 2006 adodb recordset Wieso soll er in einer neuen Technologie programmieren und alte, bald nicht mehr unterstütze Techniken benutzen? Zudem bietet doch grade ADO.NET hervorragende Methoden für den SQLServer. Ich bleibe dabei, schmeiß die Acc DB weg, beschäftige Dich gleich mit dem SQLSever. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nofi Geschrieben 22. August 2006 Autor Teilen Geschrieben 22. August 2006 Danke für die Tipps, Vorschläge etc.. Ich würde auch gerne anfangen mit dem SQL Server zu arbeiten, aber im Moment soll ich trotzdem Access lernen. Mein Programm wird auch mit Access laufen, also es wird doch nicht von Access nach Sql Server gewechselt. Na ja, und bei einer Access DB reicht dann wohl eine try&catch die nur Programmfehler abfängt, hoffe ich. Danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 28. August 2006 Teilen Geschrieben 28. August 2006 Schon mal was von SQL- Server- Express gehört ??? Den benutze ich zum üben und Programmieren, habe ohne Problem auf SQL- Server umgesetzt Ich benutze übrigens überhaupt kein Dataset sondern hab mir meine eigene SQL- Klasse geschrieben die sich um Aufbau/Abbau der Conection kümmert, dann den SQL- Befehl zusammenbaut und anschließen eine Hashtable zurückliefert. Ich benutze diesen Umweg weil ich die gleiche Klasse auch für MYSQL erfolgreich verwende. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Argbeil Geschrieben 29. August 2006 Teilen Geschrieben 29. August 2006 Ich habe jetzt gespannt alle Beiträge gelesen, aber was ich mich direkt zu begin gefragt habe: Was machst du da eigentlich mit dem TableAdapter? Wieso rufst du die InsertMethode von dem auf? Das Modell von ADO.NET 2.0 ist doch, das du die Daten im Dataset änderst (also z.B. eine neue DataRow einfügst) und dann Update auf den TableAdapter aufrufst der das Dataset mit der Datenbank synchronisiert. Sollte dieses Update nicht klappen wird eine Exception geworfen und dein Problem ist keins mehr. Ausserdem kannst du so relativ Problemlos zwischen Access und SQL Server hin und her schalten ohne Programmcode zu ändern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.