Spiegeln einer Tabelle mit dem "DataTable" unter verwendungvon "OleDBDataAdapter"
-
Huhu!!
Ich hole mir eine Table auser eine DB und mappe sie in eine DataTable Objekt, was auch funktioniert.. und will ich einträge ändern, was er aber nich übernimmt!
irgendwie sind die ItemsArray in Rows des DataTables schreibgeschützt! Es kommt kein fehler.. aber er verändert mir nichts!! Aas muss ich tun?
folgender Code:_dbMirror = new OleDbDataAdapter("SELECT * FROM ArchiveTables", _connection); DataTable table= new DataTable(); _dbMirror.Fill(table); table.Rowa[0].BeginEdit(); table.Rows[0].ItemArray[0]=NEUER WERT; table.Rows[0].EndEdit(); _dbMirror.update(table);
Gibts vll. noch ne andere lösugn wie ich eine tabelle spiegeln kann!?!?
-
1. Versuch mal den Umweg über ein object[]
Object[] r = row.ItemArray; r[0] = 1; r[1] = 2; row.ItemArray = r;
2. Was meinst du mit spiegeln?
+ Insert ... Select in der DB
+ Linq
+ zwei Ado.Net mit denselben DataAdapter befüllen?
-
Hallo witte,
mit spiegeln meine ich.. ich hab bspw. ne List von Objekten welche eqivalent mit einem datensatz der entsprechenden tabelle sind!!Nun möchte ich wenn sich die List ändert auch gleichzeitig die tabelle ändert, auch beim löschen und anfüngen von Objekten in der Liste sollte sich die tabelle anpassen!!
Wie ist es mit Linq to SQL? da gibts ja nen DataContext mit GetTable etc. das kann ich aber bspw. bei ner Access DB oder SqlCE nich verwenden odeR?
-
Wenn du dich mit dem SQL-Kram nicht auseinandersetzen willst kannst du einen Objektrelationalen Mapper verwenden. Linq2SQL würde ich nun nicht nehmen, das Teil arbeitet nur mit dem SQL-Server zusammen und wird wohl nicht mehr weiterentwickelt. Das Entity Framework ist da wohl passender, steckt aber auch noch in den Kinderschuhen:
- es ist alles noch nicht ganz zuende gedacht, nervige Fehler, umständliche Bedienung, so dass du vor einem ersten Produktiveinsatz es unbedingt erstmal testen mußt
- ich weiß nicht ob es bereits Treiber für andere DB-Systeme/Abstraktionsebenen wie OLE existieren
- in diesem System erfolgt kein automatisches Persistieren der Objekte in die DB, du mußt es trotzdem manuell mit context.SaveChanges() anweisen.Es gibt aber noch viele andere ORMs für .Net, NHibernate kannst du dir mal anschauen.