2010-12-15 4 views
42
  1. Каково максимальное значение типа данных INTEGER в sqlite3?
  2. Как вы храните ip-адрес в базе данных?
  3. Что прилагается?
  4. Как создать таблицу, принадлежащую определенной базе данных, используя sql ddl?
  5. Что это за ошибка?

ошибка в списке системы каталога: нет такой таблицы: temp.sqlite_master Невозможно выполнить запросSQLite3 Integer Максимальное значение

  1. делает supoports sqlite3 текст типа данных Юникода? Спасибо.
+9

Не расширяйте вопрос с помощью несвязанных дополнительных вопросов. Задавайте конкретные вопросы, связанные с конкретными проблемами, и задавайте новые вопросы. Давайте не будем делать этот поток учебником по sqlite. – 2010-12-15 09:29:03

ответ

75
  1. Посмотрите на http://www.sqlite.org/datatype3.html максимум 2^63-1 = 9223372036854775807
  2. Я думаю, вы должны использовать VARCHAR
  3. http://www.sqlite.org/lang_attach.html
  4. http://www.sqlite.org/lang_createtable.html
  5. может быть полезным SQLite 'no such table' error

в целом проверьте sqlite documentation

+3

Для 8-значного целого числа символов max должно быть 2^63-1, или, говоря другим способом, диапазон должен быть от -2^63 до 2^63-1 – SayeedHussain 2013-07-17 07:31:35

6

INTEGER. Значение представляет собой подписанное целое число , сохраненное в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения.

Класс хранения INTEGER, для примера , включает в себя 6 различных целых чисел типов данных различной длины. Этот имеет значение на диске. Но как в скором времени после считывания значений INTEGER с диска и в память для обработки, они преобразуются в самый общий тип данных (8-байтовое целое число со знаком).

из http://www.sqlite.org/datatype3.html

Если у вас есть какая-то другая причина не, вы можете хранить IP-адрес с помощью TEXT.

2
  • Как вы храните ip-адрес в базе данных?

Самый простой способ сохранить форму строки (например, «127.0.0.1» или «::1») с тех пор вы можете прочитать их вручную и повторной обработки на структуру адреса (если вы должны) легко. SQLite любит строки (которые используют тип TEXT) и эффективно обрабатывает их.

+1

Также, вероятно, ошибка заключается в попытке разбить IP-адрес на его составные части, если вы не работаете с ISP. – 2010-12-15 09:21:17

3

Что касается второго вопроса:

Вы можете сохранить IP-адрес в БД 2-мя способами:

  1. Как String. Это рекомендуется , так как он будет поддерживать как IPv4, так и IPv6 и не требует никаких дополнительных хлопот с IP-адресом конверсий.
  2. В качестве целого. IP - это в основном 4 байта, которые могут быть объединены в одно целочисленное значение. Однако, вы действительно этого хотите? Это даст вам массу болей, которые преобразуют его в/из строки в любое время.
1

Поддерживает ли тип текстовых данных sqlite3 unicode?

Да и нет.

Да, в этом SQLite можно хранить данные TEXT в UTF-8 или UTF-16. (Используйте PRAGMA ENCODING для выбора внутреннего формата.)

Нет, что функции LOWER и UPPER действуют только на символы ASCII. Но вы можете redefine functions и collations, чтобы добавить эту поддержку. В SQLite есть ICU extension, который делает это.