Encode en binaire des données de types chaîne, nombre ou binaires pour une utilisation de type BLOB dans les instructions SQLite
#include <SQLite.au3>
_SQLite_Encode ( $vData )
$vData | Données à encoder (String, Number ou Binary) |
Succès: | Retourne une chaîne encodée. |
Échec: | Retourne une chaîne vide et définit @error <> 0. |
La chaîne encodée est déjà encadrée par des guillemets simples.
Par exemple Chr(0) & Chr(1) ressemblerait à X'0001'.
La chaîne encodée peut être décodé par SQLite et stocké à l'état binaire comme un BLOB.
Pour les chaînes qui doivent être stockées en TEXT, utilisez _SQLite_Escape() .
Pour une valeur numérique qui doit être stockée en tant que telle, utilisez une concaténation simple.
#include <MsgBoxConstants.au3> #include <SQLite.au3> #include <SQLite.dll.au3> Local $hFile, $vData, $sFileName, $sData, $hQuery, $aRow, $sMsg _SQLite_Startup() ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF) _SQLite_Open() _SQLite_Exec(-1, "CREATE TABLE IF NOT EXISTS Test (data blob); ") $vData = Binary("Hello" & Chr(0) & "World"); = 48656C6C6F00576F726C64 $sData = _SQLite_Encode($vData) _SQLite_Exec(-1, "INSERT INTO Test VALUES (" & $sData & "); ") $vData = Binary(Chr(0) & @CRLF); = 000D0A $sData = _SQLite_Encode($vData) _SQLite_Exec(-1, "INSERT INTO Test VALUES (" & $sData & "); ") $vData = Binary(Chr(0)); = 00 mais ceci est interprété comme un nombre et retourne 0000000000000000 $sData = _SQLite_Encode($vData) _SQLite_Exec(-1, "INSERT INTO Test VALUES ( " & $sData & " ); ") _SQLite_Query(-1, "SELECT * FROM Test; ", $hQuery) While _SQLite_FetchData($hQuery, $aRow, 1) = $SQLITE_OK $sMsg &= Hex($aRow[0]) & @CRLF WEnd MsgBox($MB_SYSTEMMODAL, "Result", $sMsg) _SQLite_Close() _SQLite_Shutdown()