Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо Delphi (Zeos) ми дава широки полета в SQLite, когато поискам unsigned big int?

Не, не се "връща" към низ, SQlite просто съхранява данните, както са предоставени.

Както сочи документацията :

Ако предоставите/обвържете текстова стойност, тя ще съхрани текстова стойност. Няма преобразуване към типа, предоставен в оператора CREATE TABLE, тъй като може се появяват в други по-строги СУБД, напр. MySQL.

Така че във вашия случай, ако извлечете данните като ftWideString , предполагам, че това е така, защото сте написали данните като ТЕКСТ. Например инструментът или програмата, създаваща SQLite3 съдържание от вашия MySQL, записва тази колона като ТЕКСТ.

Що се отнася до числата, в SQLite3 няма "подписан"/"неподписан", нито проверка на точността. Така че, ако искате да съхранявате стойности "неподписано голямо цело", просто използвайте INTEGER, които са Int64.

Но във всички случаи, дори ако SQLite3 API поддържа НЕПОДПИСАНИ 64-битови цели числа , този sqlite3_uint64 може да не се поддържа от Zeos/ZDBC API или от Delphi (по-старите версии на Delphi НЕ поддържат UInt64). За да сте сигурни, трябва по-добре да извлечете такива стойности като TEXT, след което да ги конвертирате като UInt64 ръчно във вашия Delphi код.

Актуализация:

Използвате ли TDataSet потомък, предоставен от Zeos? Този компонент е свързан с DB.Pas , така че очаква един тип за всяка колона. Това може да е източникът на объркване на вашия код (който изобщо не сте показали, така че е трудно да разберете какво се случва).

Трябва по-добре да използвате ZDBC интерфейса от по-ниско ниво, който позволява да извлечете типа колона за всеки ред и да извикате метода за получаване на стойност, както ви е необходимо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избягване на пропускане на ред чрез next() Метод на ResultSet

  2. Промяна на часовата зона на Google Cloud SQL CURRENT_TIMESTAMP?

  3. Изпълнение на LIKE заявки в таблици с много милиони редове, MySQL

  4. Може ли PHP mysqli да зададе време за изчакване при опит за свързване?

  5. Spring JDBC с помощта на файл application.properties