SQLite GUID wird immer als HEX Wert ausgegeben...

  • Hallo.
    Ich möchte eine exitierende SQLite Datenbank mit AutoIt bearbeiten. Grundsätzlich ist mir die SQL Syntax halbwegs klar, auch mit AutoIt kann ich ein wenig umgehen. Doch jetzt habe ich ein Problem, das ich ohne Hilfe nicht lösen kann. In der DB, die ich bearbeite werden GUID in der Form "37DD9D24-9A85-4E5B-BBBF-D8C283C1E144" verwendet. Die Entsprechende Zelle ist vom Typ "Text" was ich auch nicht ändern kann.

    AutoIt liest das aber immer als mathematische Operation, sprich als Subtraktion von Hex- Zahlen, mit dem Ergebnis, das man mit der Ausgabe nichts mehr anfangen kann...

    Statt 37DD9D24-9A85-4E5B-BBBF-D8C283C1E144 wird etwas wie 0xaa12d1..... ausgegeben, teilweise auch als negativer Wert, je nach dem wie groß die Werte im String sind.

    Meine Queries funktionieren einwandfrei, solange ich irgendeine andere Zelle auslese. Nur bei den GUID geht das schief. Ich bin aber auf die GUID angewiesen, da sie die Verbindung zwischen diversen Tabellen herstellen...

    Das Problem entsteht bei "_SQLite_FetchData" was eben aus der GUID eine Hex- Zahl macht. Wenn ich statt "M_MEDIAITEM.MEDIA_ITEM_ID" z.B. M_MEDIAITEM.TITLE" verwende (in beiden Queries natürlich) , klappt alles wie gewünscht. M_MEDIAITEM.TITLE ist auch vom Typ "Text" beinhaltet aber "richtigen" Text, also auch Buchstaben jenseits des "F"... Auch die While - WEnd Schleife kann ich ganz weg lassen oder anders positionieren, das ändert nichts am grundsätzlichem Problem, das "_SQLite_FetchData" aus der GUID eine Hex- Zahl berechnet.

    Weiß jemand Rat?
    Danke schon mal und Guten Rutsch.

    • Offizieller Beitrag

    Funktioniert bei mir tadellos:

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Local $hSQL = _SQLite_Open()
    Local $sCreate = _
    "CREATE TABLE [test] (" & _
    "[id] INTEGER PRIMARY KEY NOT NULL," & _
    "[uid] TEXT);"
    _SQLite_Exec($hSQL, $sCreate)

    [/autoit] [autoit][/autoit] [autoit]

    Local $sInsert = _
    "INSERT INTO test VALUES (1, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E144');" & _
    "INSERT INTO test VALUES (2, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E145');" & _
    "INSERT INTO test VALUES (3, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E146');" & _
    "INSERT INTO test VALUES (4, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E147');" & _
    "INSERT INTO test VALUES (5, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E148');"
    _SQLite_Exec($hSQL, $sInsert)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aRow, $hQuery, $sMsg
    Local $strSelect = "SELECT * FROM test;"

    [/autoit] [autoit][/autoit] [autoit]

    _SQlite_Query ($hSQL, $strSelect, $hQuery)

    [/autoit] [autoit][/autoit] [autoit]

    While _SQLite_FetchData ( $hQuery, $aRow ) = $SQLITE_OK
    For $i = 0 To UBound($aRow) -1
    $sMsg &= $aRow[$i] & @TAB
    Next
    $sMsg &= @LF
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($sMsg & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit]


    Output:

    Code
    1    37DD9D24-9A85-4E5B-BBBF-D8C283C1E144    
    2    37DD9D24-9A85-4E5B-BBBF-D8C283C1E145    
    3    37DD9D24-9A85-4E5B-BBBF-D8C283C1E146    
    4    37DD9D24-9A85-4E5B-BBBF-D8C283C1E147    
    5    37DD9D24-9A85-4E5B-BBBF-D8C283C1E148
  • Hi.
    Danke fürs anschauen.
    Bei mir kommt das dabei raus:

    0xEAF65345D220AD45A0E7ED8D484B1613

    Muss ich meine AutoIt Version vielleicht updaten? (3.3.12.0)

    Ich schau mir das morgen noch genauer an.

  • Hi.
    Ich habs raus. Die GUID in der Original Datenbank sind binär, aber als Text abgespeichert, da dann weniger Platz verbraucht und weniger Zeit benötigt wird. Darauf muss man erst mal kommen...
    Danke für die Hilfe...