对于SQL Lite,为什么此表命令不起作用?

时间:2018-11-18 04:27:21

标签: sqlite

所以我使用此命令制作了一个表

.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 :(得分:0)

正确使用命令即可正常工作。

简而言之,您所做的就是

  • 创建并保存没有表的数据库。
  • 使用记事本打开该文件(尽管可能会收到警告)
  • 输入了一些数据并保存了文件。
    • 因此删除SQLite知道的文件中的所有内容,因此当您打开它时,SQLite会告诉您它不是数据库,例如前16个字节必须为 SQLite格式3 \ 000 (在记事本中打开数据库文件时,请参见下文)。
  • 从SQLITE3程序中打开文件,然后该程序告诉您它不是数据库。

即您打开的文件是实际的数据库,而不是您在记事本中键入的文件。

数据,将在一个或多个表的列中。必须通过SQLITE3命令(包括SQL)输入。 CREATE TABLE ...是一种这样的SQL命令(您有效且已在下面使用)。

您应该做的是启动SQLIT3(如果将sqlite3的路径已添加到PATH环境变量中,则键入sqlite3),然后输入诸如CREATE TABLE ...... >

E.G。

首次从命令提示符启动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 (该文件不存在,否则将打开它)
  • 然后创建人员表。
  • 然后提取系统表中名为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 文件。
  • 列出表。
  • 插入一行
  • 分发“人”表中的行(即刚刚添加的行)
  • 最后退出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存储在名为SQL的列的sqlite_master表中,并且照原样可见)
  • 其他数据将不会以有用/可用的格式显示。

即在记事本中输入正确的数据以创建有效的SQLite3数据库文件会很困难,甚至不可能。