Tidak, itu tidak "kembali" ke string, SQLite hanya menyimpan data seperti yang disediakan.
Seperti status dokumentasi :
Jika Anda memberikan/mengikat nilai teks, itu akan menyimpan nilai teks. Tidak ada konversi ke jenis yang disediakan dalam pernyataan CREATE TABLE, karena mungkin muncul di RBMS lain yang lebih ketat, mis. MySQL.
Jadi dalam kasus Anda, jika Anda mengambil data sebagai ftWideString
, Saya kira ini karena Anda menulis data sebagai TEKS. Misalnya, alat atau program yang membuat konten SQLite3 dari MySQL Anda menulis kolom ini sebagai TEXT.
Tentang angka, tidak ada "ditandatangani"/"tidak ditandatangani", atau pemeriksaan presisi di SQLite3. Jadi jika Anda ingin menyimpan nilai "unsigned big int", cukup gunakan INTEGER, yaitu Int64.
Namun, dalam semua kasus, meskipun SQLite3 API mendukung bilangan bulat 64 bit UNSIGNED
, sqlite3_uint64
ini type mungkin hampir tidak didukung oleh Zeos/ZDBC API atau Delphi (versi Delphi yang lebih lama TIDAK mendukung UInt64). Yang pasti, sebaiknya Anda mengambil nilai seperti TEXT, lalu mengonversinya sebagai UInt64
secara manual dalam kode Delphi Anda.
Pembaruan:
Apakah Anda menggunakan TDataSet
keturunan yang disediakan oleh Zeos? Komponen ini terikat dengan DB.Pas
, jadi mengharapkan satu jenis per kolom. Ini mungkin sumber kebingungan kode Anda (yang tidak Anda tampilkan sama sekali, sehingga sulit untuk mengetahui apa yang terjadi).
Sebaiknya Anda menggunakan antarmuka ZDBC tingkat bawah, yang memungkinkan untuk mengambil jenis kolom untuk setiap baris, dan memanggil metode pengambil nilai sesuai kebutuhan.