Haskell SQLite3 запросить все - PullRequest
0 голосов
/ 22 ноября 2018

Хотелось бы определить размер таблицы (длину), чтобы пользователь не вводил инкрементный идентификатор, который уже существует (Примечание: оставил все книги на Haskell, чтобы мои ноги промокли).Получил таблицу с id, task, date_in, date_out и нужно посчитать количество идентификаторов.Используя эту функцию:

checkUniqueID = do
  conn <- open "taglist.db"
  len <- query conn "SELECT * FROM task;" (Only xxx) :: IO [id]
  let showLength = length $ len
  print showLength
  close conn
  return ()

Однако: если пропустить 'Only', в ghci будет упомянуто слишком мало аргументов, но я действительно не могу понять, что поместить в xxx.Жаль, что все документы на Haskell настолько фрагментированы, поскольку это такой классный язык.Спасибо, ребята!

1 Ответ

0 голосов
/ 22 ноября 2018

Я не очень знаком с этими библиотеками.Я проверил документы Database.PostgreSQL.Simple и обнаружил, что, если у вас нет аргументов для вашего запроса, вы можете использовать query_ и опустить кортеж аргументов.Примеры в самом начале документов весьма полезны.

При этом ваш подход выглядит неверно.Вы вытягиваете всю таблицу из БД только для подсчета записей.Это пустая трата: вместо этого вы должны использовать что-то вроде select count(*) from .., чтобы запрашивать только длину.

Это может работать: (опять же, я никогда не использовал эту библиотеку)

[Only len] <- query_ conn "select count(*) from task" :: IO [Only Int]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...