Для SQL Lite почему эта табличная команда не работает? - PullRequest
0 голосов
/ 18 ноября 2018

Итак, я создал таблицу с помощью этой команды

.open C:/Users/Fries/Desktop/Test.db

Я закрыл SQL lite и заполнил базу данных данными ниже, используя блокнот

CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

Когда я открываю БД и набираю .tables, по какой-то причине возникает ошибка

enter image description here

1 Ответ

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

Команды работают при правильном использовании.

Короче говоря, то, что вы сделали, это

  • Создание и сохранение базы данных, в которой нет таблиц.
  • Открыть этот файл с помощью Блокнота (несмотря на предупреждения, которые вы, возможно, получили)
  • Введены некоторые данные и сохранен файл.
    • Таким образом, удаляя все в файле, о котором SQLite знает, поэтому, когда вы открываете его, SQLite сообщает вам, что это не база данных, например. первые 16 байтов должны быть формат SQLite 3 \ 000 (см. ниже, когда файл базы данных открывается в блокноте).
  • Откройте файл из программы SQLITE3, которая затем сообщит вам, что это не база данных.

т.е. Файл, который вы открываете, является реальной базой данных, а не тем, что вы ввели в блокнот.

Данные, которые будут находиться в столбцах таблицы или таблиц. Должен быть введен с помощью команд SQLITE3 (включая SQL). CREATE TABLE ... является одной из таких команд SQL (ваша команда действительна и использовалась ниже как есть).

Что вам нужно сделать, это запустить SQLIT3 (набрать sqlite3, если его путь был добавлен в переменную среды PATH), а затем ввести команды, такие как CREATE TABLE ......

например.

При первом запуске sqlite3 из командной строки вы получите: -

C:\Users\Mike>sqlite3
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.

База данных открыта как таковая, но это база данных в памяти и будет потеряна, если вы выйдете.

Вы можете создать базу данных на диске, открыв ее (даже если она не существует), используя .open , а затем введя команды. Вы также можете ввести команды, а затем использовать команду .save для сохранения базы данных в памяти на диск.

Итак, после всего вышесказанного вы можете сделать: -

sqlite> .open Test.db
    sqlite> CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
    sqlite> SELECT * FROM Sqlite_master;
    table|Persons|Persons|3|CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )
    sqlite> .quit
  • Это создает файл Test.db (который не существует, в противном случае он откроет его)
  • Затем создает таблицу Persons .
  • А затем извлекает строки в системной таблице с именем sqlite_master (перечисляет элементы, включая таблицы).
  • Наконец он выходит из SQLITE3.

Возможно, вы могли бы тогда сделать : -

C:\Users\Mike>sqlite3 SQLite version 3.22.0 2018-01-22 18:45:57 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. 
sqlite> .open Test.db 
sqlite> .tables Persons 
sqlite> INSERT INTO Persons VALUES (1,'Smith','Fred','Somewhere','London'); 
sqlite> select * FROM persons; 1|Smith|Fred|Somewhere|London sqlite> .quit
  • Запускает SQLITE3
  • Открывает уже существующий Test.db файл.
  • Перечисляет таблицы.
  • вставляет строку
  • отображает строки в таблице Persons (т.е. только что добавленная строка)
  • Наконец выходит из SQLITE3

Открытие файла Test.db в блокноте: -

SQLite format 3   @                                                                    .°
   e e                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ‚tablePersonsPersonsCREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )   
  • Вы можете увидеть некоторые знакомые данные (например, SQL, использованный для создания таблицы, хранится в таблице sqlite_master в столбце с именем SQL и будет отображаться как есть)
  • Другие данные не будут отображаться в используемом / пригодном для использования формате.

т.е. Вам будет сложно ввести правильные данные, чтобы создать правильный файл базы данных SQLite3 в блокноте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...