SQLQuery: Unable to open file "name.db"

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 05.05.2019 22:50:15

Добрый вечер.
В компоненте SQLQuery при попытке включить флажок "Active" вылезает сообщение:
Unable to open file "name.db"


На что обратить внимание, чтобы компонент мог спокойно работать с файлом базы данных? Остальные компоненты для чтения базы вроде бы настроены правильно.

Код: Выделить всё
object Form1: TForm1
  Left = 258
  Height = 379
  Top = 119
  Width = 388
  Caption = 'Form1'
  ClientHeight = 379
  ClientWidth = 388
  LCLVersion = '2.0.2.0'
  object DBGrid1: TDBGrid
    Left = 8
    Height = 164
    Top = 8
    Width = 368
    Color = clWindow
    Columns = <   
      item
        MaxSize = 10
        Title.Caption = 'ID'
        FieldName = 'id'
      end   
      item
        MaxSize = 150
        Title.Caption = 'ФИО'
        FieldName = 'fio'
      end   
      item
        MaxSize = 100
        Title.Caption = 'Номер'
        FieldName = 'nomer'
      end>
    DataSource = DataSource1
    TabOrder = 0
  end
  object DataSource1: TDataSource
    DataSet = SQLQuery1
    left = 55
    top = 192
  end
  object SQLQuery1: TSQLQuery
    FileName = 'telekniga.db'
    FieldDefs = <   
      item
        Name = 'id'
        DataType = ftString
        Precision = -1
        Size = 255
      end   
      item
        Name = 'fio'
        DataType = ftMemo
        Precision = -1
      end   
      item
        Name = 'nomer'
        DataType = ftMemo
        Precision = -1
      end>
    Database = SQLConnector1
    Transaction = SQLTransaction1
    SQL.Strings = (
      'SELECT * FROM spravochnik'
    )
    Params = <>
    left = 136
    top = 192
  end
  object SQLTransaction1: TSQLTransaction
    Active = True
    Database = SQLConnector1
    left = 224
    top = 192
  end
  object SQLConnector1: TSQLConnector
    Connected = True
    LoginPrompt = False
    DatabaseName = 'telekniga.db'
    KeepConnection = False
    Transaction = SQLTransaction1
    ConnectorType = 'SQLite3'
    left = 315
    top = 192
  end
end
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Снег Север » 06.05.2019 08:30:58

Для SQLite надо использовать TSQLite3Connection. Путь к базе нужен полный, если она не рядом с экзешником. sqlite3.dll есть и нужной версии? Также рекомендуется использовать TSQLDBLibraryLoader.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2060
Зарегистрирован: 27.11.2007 16:14:47

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 06.05.2019 08:42:00

TSQLite3Connection использован, файл указан и находится в папке с проектом, туда же генерируется exe-шник. При этом полный путь к файлу БД ничего, по сути, не менял. Ошибка не исчезала.
dll-файл так же в наличии, как в папке C:/Windows, так и в папке с проектом. Скачан с официального сайта на прошлой неделе, поэтому свежий.
Добавление TSQLDBLibraryLoader вызвало новую ошибку: This operation is not allowed while the database is loaded.

Добавлено спустя 8 минут 53 секунды:
В TSQLDBLibraryLoader убрал галочку Enabled. Компиляция проходит успешно, однако данные из БД не подтягиваются. Записи там есть, DBGrid настроен. Однако SQLQuery при попытке активировать выдаёт ошибку, что не может открыть файл базы.
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Vadim » 06.05.2019 13:32:19

Виталий1990
Самый логичный вопрос, который возникает при прочтении Вашего сообщения. Вот смотрите:
Виталий1990 писал(а):Unable to open file "name.db"

Виталий1990 писал(а):object SQLQuery1: TSQLQuery
FileName = 'telekniga.db'

Виталий1990 писал(а):object SQLConnector1: TSQLConnector
Connected = True
LoginPrompt = False
DatabaseName = 'telekniga.db'

1. Вы там в свой код куда засунули эту самую "name.db"?
2. У Вас в SQLConnector1 и в SQLQuery1 указано одно и то же имя файла. Вы с какой целью хотите испортить свой файл БД? С такими ужасами у Вас БД ни в коем случае работать больше никогда не будет. ;-)
Vadim
долгожитель
 
Сообщения: 3661
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 06.05.2019 13:37:22

Прошу прощения. telekniga.db
Хорошо. Если это неправильный подход, то как это дело оформить правильно?
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Vadim » 06.05.2019 14:37:52

Виталий1990
Как минимум - убрать из SQLQuery1, а там посмотрим. Приведёте здесь ещё раз текст выскочившей ошибки.
Vadim
долгожитель
 
Сообщения: 3661
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 06.05.2019 16:04:56

Убрал из SQLQuery1 название файла базы. При установке флажка активации выходит ошибка:
TSQLite3Connection: no such table: spravochnik


DBGrid после перекомпиляции проекта пустой, т.е. существующие в базе записи не отображаются.
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Vadim » 06.05.2019 18:17:06

Виталий1990 писал(а):no such table: spravochnik

Вы понимаете, о чём речь или нужен перевод?
Vadim
долгожитель
 
Сообщения: 3661
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 06.05.2019 19:31:27

Vadim писал(а):Вы понимаете, о чём речь или нужен перевод?

В том-то и дело, что таблица создавалась именно с тем именем, которое указано. Специально проверял "цивильно" через командную строку и "варварски", открыв файл базы блокнотом, где латиница прекрасно сохраняется.
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Vadim » 07.05.2019 03:35:06

Виталий1990
Т.е. Вы сторонними средствами проверили, что указанная таблица в БД присутствует?
Vadim
долгожитель
 
Сообщения: 3661
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 07.05.2019 07:33:38

Vadim писал(а):Виталий1990
Т.е. Вы сторонними средствами проверили, что указанная таблица в БД присутствует?

Да, совершенно верно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Снег Север » 07.05.2019 08:05:09

В TSQLite3Connection есть функция GetTableNames - проверьте, показывает ли она, после коннекшена, наличие таблицы spravochnik.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2060
Зарегистрирован: 27.11.2007 16:14:47

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 07.05.2019 08:52:57

Нашлось решение путём обновления данных по нажатию кнопки.
Код: Выделить всё
procedure TForm1.bF5Click(Sender: TObject);
begin
   try  // пробуем подключится к базе
    SQLConnector1.Open;
    SQLTransaction1.Active := True;
    ShowMessage('Подключено!');
  except   // если не удалось то выводим сообщение о ошибке
    ShowMessage('Ошибка подключения к базе!');
  end;
  try
    SQLQuery1.Active:=false;
    SQLQuery1.SQL.Clear;
    SQLQuery1.sql.add('select * from spravochnik');
    SQLQuery1.Open;
  except
    ShowMessage(' Ошибка при выполнении SQL запроса.');
  exit;
  end;
end;       


Правда, по какой-то причине поле ФИО растягивается после нажатия кнопки очень сильно. Не смотря на все настройки в DBGrid.
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

Re: SQLQuery: Unable to open file "name.db"

Сообщение Vadim » 07.05.2019 09:51:46

Виталий1990 писал(а):Правда, по какой-то причине поле ФИО растягивается после нажатия кнопки очень сильно.

Если не указать размер поля вручную, то DBGrid его будет ставить самостоятельно, ориентируясь на размер символьного поля в БД. Т.е. Вам нужно будет вручную добавить в DBGrid необходимые поля (может быть Вам на все смотреть и не нужно? ;-) ) и указать их размеры.
Vadim
долгожитель
 
Сообщения: 3661
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: SQLQuery: Unable to open file "name.db"

Сообщение Виталий1990 » 07.05.2019 09:58:53

Vadim писал(а):
Виталий1990 писал(а):Правда, по какой-то причине поле ФИО растягивается после нажатия кнопки очень сильно.

Если не указать размер поля вручную, то DBGrid его будет ставить самостоятельно, ориентируясь на размер символьного поля в БД. Т.е. Вам нужно будет вручную добавить в DBGrid необходимые поля (может быть Вам на все смотреть и не нужно? ;-) ) и указать их размеры.


Минимальные и максимальные размеры уже указаны. Однако, как видно на скрине "Таблица", ранее указанное поле явно выходит за пределы этих размеров.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Виталий1990
новенький
 
Сообщения: 16
Зарегистрирован: 02.05.2019 01:48:01

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot], ZuluSpirit и гости: 12

Рейтинг@Mail.ru