German SQL-Tabelle in Array übertragen?

Discussion in 'German Forum' started by Joe73, Apr 16, 2018.

  1. Joe73

    Joe73 Member Licensed User

    Hallo,
    ich habe mal wieder eine Frage zum Thema SQL.
    Es ist wohl möglich die Daten aus einem Array in eine Tabelle zu übertragen in einem Zug.

    ich es im Gegensatz auch möglich, die Daten aus einer Tabelle bzw. vom Cursor
    in ein Array zu übertragen ohne mit einer Schleife zu arbeiten?

    vilen Dank schon mal für Eure Hilfe..

    mfg Jürgen
     
  2. DonManfred

    DonManfred Expert Licensed User

    Du musst schon durch den Cursor iterieren. Ohne geht es nicht.
    Für den anderen Weg. Was genau willst du machen. Grundsätzlich kannst Du aus einem array dir neue SQLs zusammen bauen um die in die DB zu schreiben. Oder verstehe ich hier was falsch?
     
  3. Joe73

    Joe73 Member Licensed User

    Hallo,
    Du hast es richtig verstanden.
    Also den Weg über Cursor will ich auch gehen.
    Ich möchte dann aber die ermittelten Daten welche im Cursor sind mit einmal in ein Array bringen, ohne den Weg über
    Cursor.Position usw. zu gehen, ob das geht würde ich gerne wissen...
    Habe dazu noch nichts gefunden...

    mfg Jürgen
     
  4. DonManfred

    DonManfred Expert Licensed User

    Nein, geht nicht.
    Lege Dir eine Liste an,
    Iteriere durch den cursor, für jeden Eintrag im Cursor erstellst Du eine Map und packst diese Map dann in die Liste.
     
    KMatle likes this.
  5. MarkusR

    MarkusR Well-Known Member Licensed User

    wenn das diese SQL Klasse nicht kann wäre es interessant zu wissen ob man beim Type an die Felder kommt
    dann könnte man eine kleine Sub machen welche die Tabellen Werte in die Struktur einordnet.
    Dazu kenne ich B4X zu wenig.

    Code:
    Type Table1(a As String,b As Int, c As Float)
     
  6. DonManfred

    DonManfred Expert Licensed User

    Ein CustomType wäre auch möglich. Aber auch hier musst du erstmal die Werte des Cursors in den Custom Type eintragen nachdem Du den Type initialisiert hast.
     
  7. MarkusR

    MarkusR Well-Known Member Licensed User

    was mir so vor schwebt um das zu vereinfachen
    fantasie code:
    Code:
    Type RowDataType(a As String,b As Int, c As Float)

    foreach row 
    in sql.result
    dim RowData as RowDataType
    foreach column 
    in row.Columns
    RowData.Field(column) =  row.GetInt(column)
    next
    list1.add(RowData)
    next
     
  8. DonManfred

    DonManfred Expert Licensed User

    du kannst mit einem Index nicht auf die Einträge in RowDataType zugreifen. Das klappt so nicht.
    du musst die schon manuell befüllen...
    Code:
    RowDataType.a = "String hier"
     
  9. MarkusR

    MarkusR Well-Known Member Licensed User

    @DonManfred dann ist das quasi ein Feature Request , ich meine in C# geht das über eine Reflection Klasse.
    Dieses manuelle zuweisen finde ich voll nervig.
     
  10. DonManfred

    DonManfred Expert Licensed User

    Den Du im entsprechendem Forum stellen solltest. Hier sieht das niemand als Feature-Request an.
     
  11. MarkusR

    MarkusR Well-Known Member Licensed User

  12. OliverA

    OliverA Well-Known Member Licensed User

  13. MarkusR

    MarkusR Well-Known Member Licensed User

  14. KMatle

    KMatle Expert Licensed User

    Ich nutze nur Lists mit Maps.

    Man kann bei SQLite auch alle Daten der Row einfach in ein Stringarray schreiben und wieder zurück. Ein Floatwert von 2.54 ist dann halt ein String "2.54". Der Insert oder ein Update einer REAL-Spalte (= Float) ist problemlos möglich. Formatprüfungen kann man (z.B. bei der Eingabe) über IsNumber erledigen. So erpart man sich aufwändiges hin- und herschaufeln von Daten.
     
  15. Joe73

    Joe73 Member Licensed User

    Hallo,
    vielen Dank für Eure Hinweise.
    Ich werde mich mal damit beschäftigen.

    mfg Jürgen
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice