Announcement

Collapse
No announcement yet.

Länge von String aus Datenbank auslesen

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

  • Länge von String aus Datenbank auslesen

    Hi nochmal,

    nun habe ich ein weiteres Problem (allerdings passt es leider nicht mehr zum vorherigen Thema *sorry*).
    Also ich lese alle Tabellen und Spalten aus einer Datenbank aus. Das klappt auch alles so wie es soll (im Code unten hab ich die Auswahl der Datenbankverbindung mal weggelassen). Allerdings möchte ich gerne, dass er mir zu einem String auch seine Länge angibt.
    Könnt ihr mir helfen, wie ich den Code dahingehend umstrukturieren kann?

    [highlight=vbnet]
    ListBox1.Items.Clear()

    Dim sItem As String
    Dim sTableName As String
    Dim con As New OleDbConnection

    '(...) Datenbankverbindung auswählen und "vorbeiten"

    con.Open()
    Try
    'Tabellennamen anzeigen
    Dim aTable As DataTable
    aTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
    New Object() {Nothing, Nothing, Nothing, "TABLE"})

    For Each aTbl As DataRow In aTable.Rows

    sTableName = String.Format("{0}", aTbl("TABLE_NAME"))
    sItem = ("Tabelle: »" & sTableName & "«")
    ListBox1.Items.Add(sItem)

    'Spaltenname und Datentyp anzeigen
    Dim aSchemaTable As DataTable
    aSchemaTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, New Object() {Nothing, Nothing, sTableName, Nothing})

    For Each aRow As DataRow In aSchemaTable.Rows

    Dim Spalte As String
    Dim Datentyp As String
    Dim DT As OleDb.OleDbType

    Spalte = String.Format("»{0}«", aRow("COLUMN_NAME"))
    Datentyp = String.Format("{0}", aRow("DATA_TYPE"))

    DT = Datentyp

    sItem = ("Spalte " & Spalte & " ist vom Datentyp »" & DT.ToString & "«")

    ListBox1.Items.Add(sItem)
    Next
    ListBox1.Items.Add("")
    Next
    Finally
    con.Close()
    End Try
    [/highlight]
    Greez

    da_KAthi

  • #2
    In der Datenbank LENGTH(char)

    Im Programm die Funktion Length() deines Strings

    Comment


    • #3
      Oh, da is das wohl falsch rüber gekommen.

      Im Moment gibt er aus:
      Tabelle: »Adresse«
      Spalte »HausNr« ist vom Datentyp »WChar«
      (...)
      Spalte »Z_Adresse« ist vom Datentyp »Integer«

      Und ich möchte gerne, dass er mir anstatt »WChar« sowas wie »WChar(50)« ausgibt, wenn das die maximale Länge der Strings ist.
      Greez

      da_KAthi

      Comment


      • #4
        na da muss ich dann wohl passen =) so tief war ich in der API noch nie drin. Mir fallen nur irgendwelche Views in der DB ein. Die sind dann aber von der jeweilig verwendeten DB abhängig.
        Weiss nicht ob die Ole Schnittstelle das hergibt ich überlasse den erfahrenen DB Kollegen das Wort.

        Comment


        • #5
          Welche Felder hast du den noch in der DataTable die dir GetOleDbSchemaTable zurückliefert?

          Welche Informationen du da bekommst ist so weit ich weiß Datenbankabhängig.
          Bei der DB2 die ich hier zur Verfügung habe gäbe es da zum Beispiel eine CHARACTER_MAXIMUM_LENGTH Spalte die man auslesen könnte. Ob die von deiner Datenbank auch geliefert wird musst du in der Hilfe zum OLEDB Provider deiner Datenbank klären. Oder einfach mal die Columns der Datatable die du schon hast untersuchen was den alles drin steht.

          Comment


          • #6
            Okay... dann werde ich mich mal auf die Suche begeben.
            Wenn ich was gefunden habe, melde ich mich... kann aber dauern.
            Greez

            da_KAthi

            Comment


            • #7
              Hey!
              CHARACTER_MAXIMUM_LENGTH war die Lösung. Das geht bei mir auch.
              Danke für eure Hilfe!
              Greez

              da_KAthi

              Comment

              Working...
              X