Announcement

Collapse
No announcement yet.

Elegant die Connection von Tableadaptern wechseln :)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Elegant die Connection von Tableadaptern wechseln :)

    Hallo alle zusammen,

    ich hoffe ihr könnt mir bei einem Problem etwas helfen

    Ich habe ein Programm welches mit verschiedenen Datenbanken arbeiten muss, je nach dem was für eine Datenbank ausgewählt wurde vom User. Die Datenbanken müssen leider Access Datenbanken sein.
    Nun muss ich je nach dem welche Datenbank der User gewählt hat die Connection von meinem Tableadaptern per Hand ändern. Was wie folgt aussieht:

    Code:
            cnvw.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\verwaltung.icx;Persist Security Info=True;Jet OLEDB:Database Password=****"
            cnvw.Open()
            cmd.Connection = cnvw
            cmd.CommandText = "Select DBPfad + '\\' +DBName from tbl_KV_Datenbanken Where Aktuell=true"
    
            ra = cmd.ExecuteScalar
            cnvw.Close()
    
            Try
                pfad = ra.ToString
                cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ra.ToString + ";Persist Security Info=True;Jet OLEDB:Database Password=****"
            Catch ex As Exception
                cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\standardDB.icx;Persist Security Info=True;Jet OLEDB:Database Password=****"
            End Try
    
    
    
            Me.Tbl_Test1TableAdapter.Connection = cn
            Me.Tbl_Test2TableAdapter.Connection = cn
            Me.Tbl_Test3TableAdapter.Connection = cn
    Da wir mittlerweile aber ein paar mehr Tableadapter haben, wird es langsam umständlich da immer wieder nach zu pflegen. Eventuell habt ihr eine Idee wie man es besser lösen könnte

    Schöne Grüße Alex

  • #2
    Wenn du im Dataset Designer mal auf einen Tableadapter klickst wirst du sehen das man dem Tableadapter eine Basisklasse vorgeben kann(die BaseClass Property des Tableadapters im Designer). Die dann beim generieren des Tableadapters verwendet wird. Du kannst damit also relativ elegant einfach deinen Code generisch in der Basisklasse verstecken. ~Relativ~ elegant weil das ja die Basisklasse ist und bestimmte Dinge noch nicht da sind, z.B kann die Basisklasse nicht einfach auf die Connection zugreifen da die ja erst in den Nachfahren (den Tableadapter) reingeneriert wird. Da muss du dann per Reflektion aus der Basisklasse auf die noch nicht bekannte Connection zugreifen.

    Comment


    • #3
      OK klingt Interessant Ich werds mal versuchen auch wenn ich noch nichts mit Reflexionen gemacht hab

      Danke

      Comment

      Working...
      X