Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Probleme bei Datenbank aktualisierung
Student91 - Do 04.02.10 23:18
Titel: Probleme bei Datenbank aktualisierung
Hi Leute bin neu hier und hab mich mal ein bisschen umgeschaut aber leider nichts passendes zu meinem Problem gefunden. Also wenn ich Button 2 klicke soll die Datenbank aktualisiert werden das funktioniert aber nur wenn ich den Code aus der Form_Load auskommentieren diesen Code brauch ich später aber für die Suche. Es kommt immer die Fehlermeldung Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt, vielleicht kann mir ja einer von euch helfen schonmal vielen Dank im voraus!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109:
| namespace Datenbank { public partial class FormMitarbeiter : Form { public FormMitarbeiter() { InitializeComponent(); } private OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Bank.mdb;"); private OleDbDataAdapter da = null; private DataSet ds = null; private DataView dv = null;
private void FormMitarbeiter_Load(object sender, EventArgs e) { OleDbCommand cmd = new OleDbCommand("Select * FROM Mitarbeiter", conn); da = new OleDbDataAdapter(cmd); DataTable dt = new DataTable("MitarbeiterListe"); conn.Open(); da.Fill(dt); conn.Close(); dv = new DataView(dt);
foreach (DataColumn c in dt.Columns) comboBox1.Items.Add(c.ColumnName); comboBox1.SelectedIndex = 0; dataGridView1.DataSource = dv;
} public DataSet getMitarbeiter() { string tab = "SELECT * FROM Mitarbeiter"; da = new OleDbDataAdapter(tab, conn); conn.Open(); DataSet ds = new DataSet(); da.Fill(ds, "Mitarbeiter"); conn.Close(); return ds; } public void setMitarbeiter(ref DataSet ds) { OleDbCommandBuilder cb = new OleDbCommandBuilder(da); conn.Open(); da.Update(ds, "Mitarbeiter"); conn.Close(); }
private void button1_Click(object sender, EventArgs e) { dataGridView1.DataSource = null; ds = getMitarbeiter(); dataGridView1.DataSource = ds; dataGridView1.DataMember = "Mitarbeiter"; }
private void button2_Click(object sender, EventArgs e) { DataSet ds1 = ds.GetChanges();
if (ds1 != null) { try { setMitarbeiter(ref ds1); ds.Merge(ds1); ds.AcceptChanges(); MessageBox.Show("Datenbank wurde aktualisiert!"); this.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Fehler"); conn.Close(); } } }
private void button4_Click(object sender, EventArgs e) {
dv.Sort = comboBox1.Text; switch (comboBox1.SelectedIndex) { case 0: dv.RowFilter = "Convert(MitarbeiterID,'System.String') LIKE'" + textBox1.Text + "%'"; break; case 1: dv.RowFilter = "Convert(Bankleitzahl,'System.String') LIKE'" + textBox1.Text + "%'"; break; case 2: dv.RowFilter = dv.Sort + " LIKE '" + textBox1.Text + "%'"; break; case 3: dv.RowFilter = dv.Sort + " LIKE '" + textBox1.Text + "%'"; break; case 4: dv.RowFilter = "Convert(Gehalt,'System.String') LIKE'" + textBox1.Text + "%'"; break; case 5: dv.RowFilter = "Convert(Geburtsdatum,'System.String') LIKE'" + textBox1.Text + "%'"; break;
} } } } |
Moderiert von
Kha: C#-Tags hinzugefügt
danielf - Fr 05.02.10 09:10
Hallo und :welcome: ,
wenn du eine Fehlermeldung bekommst, wäre es sehr hilfreich für uns, wenn du diese komplett zeigst. Ich kenne den Grund für deinen Fehler, muss nun aber erstmal Zeile für Zeile deinen Code durch gehen um zu finden wo das Objekt nicht gesetzt ist. Das Objekt setzt du vermutlich in deiner Load-Methode und hast deshalb dann kein Problem wenn du den Ode dort drin hast.
ich such mal weiter ...
Wah.. endlich gefunden!
Also: Wenn du den Code aus deiner Load-Methode kommentierst wird keine Instanz deines OleDbDataAdapter erstellt (Variable da). In der Button2-Methode versuchst du über die SetMitarbeiter irgendwas komisches .. auf jedenfall übergibst du dort dem OleDbCommandBuilder die Referenz von da. Da diese auf Null zeigt (wenn du den Code im Form_Load rausnimmst) bekommst du eine NullPointException.
Hoffe das hilf dir weiter.. mich hat es nämlich viel Zeit gekostet, den Code-Wirrwarr zu ordnen.
Gruß Daniel
Student91 - Sa 06.02.10 18:13
Hallo erstmal vielen Dank für deine Antwort!! Es hilft mir leider nicht weiter, weil z.B. wenn ich den Quellcode aus der Form_load auskommentiere der Button_2click wunderbar funktioniert nur wenn ich das drinnen habe geht es nicht und ich verstehe nicht warum sorry??
Vielleicht hast du ja noch eine Idee, wenn ja würde ich mich über eine Antwort sehr freuen bis dahin vielen Dank.
Kha - Sa 06.02.10 23:57
Wo die Exception überhaupt auftritt, hast du uns jetzt leider immer noch nicht verraten.
Student91 - So 07.02.10 00:03
Ja sorry hatte ich vergessen die tritt bei DataSet ds1 = ds.GetChanges(); ich versteh nicht was ich da ändern muss.
Kha - So 07.02.10 00:42
Wenn du davor nicht auf Button 1 gedrückt hast, ist das kein großes Wunder, oder? Mit dem Code in _Load hat das aber nichts zu tun.
Student91 - Mo 08.02.10 17:11
Erstmal vielen Dank für die Antworten davor! Wie kann ich das machen das ich nicht vorher auf Button1 drücken muss hast du da vielleicht ne Idee oder einen Ansatz für mich?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!