いいえ、文字列に「戻る」ことはありません。SQliteは、提供されたとおりにデータを保存するだけです。
テキスト値を指定/バインドすると、テキスト値が格納されます。 可能性があるため、CREATETABLEステートメントで指定された型への変換はありません。 他のより厳密なRBMSに表示されます。 MySQL。
したがって、あなたの場合、データをftWideString
として取得すると 、これはデータをTEXTとして書き込んだためだと思います。たとえば、MySQLからSQLite3コンテンツを作成するツールまたはプログラムは、この列をTEXTとして書き込んでいます。
数値については、SQLite3には「符号付き」/「符号なし」も精度チェックもありません。したがって、「unsigned big int」値を格納する場合は、IntEGER(Int64)を使用するだけです。
ただし、すべての場合において、SQLite3APIはUNSIGNED64ビット整数をサポートします
、このsqlite3_uint64
タイプは、Zeos / ZDBC APIまたはDelphiではほとんどサポートされていない可能性があります(古いバージョンのDelphiはUInt64をサポートしていません)。確かに、TEXTなどの値を取得してから、UInt64
として変換することをお勧めします。 Delphiコードで手動で。
更新:
TDataSet
を使用していますか Zeosによって提供された子孫?このコンポーネントはDB.Pas
に関連付けられています 、したがって、列ごとに1つのタイプが必要です。これがコードの混乱の原因である可能性があります(まったく表示しなかったため、何が起こっているのかを理解するのは困難です)。
各行の列タイプを取得できる低レベルのZDBCインターフェースを使用し、必要に応じて値ゲッターメソッドを呼び出すことをお勧めします。