sqlite3 api与数据库交互

时间:2013-11-29 10:39:58

标签: c sqlite

从这里运行这个简单示例时遇到问题:

SQLite example

我创建了数据库

[prompt]$ sqlite3 /tmp/bedrock.db
sqlite> .help
sqlite> CREATE TABLE employee (Name varchar(20),Dept varchar(20),jobTitle varchar(20));
sqlite> .schema employee
CREATE TABLE employee (Name varchar(20),Dept varchar(20),jobTitle varchar(20));
sqlite> INSERT INTO employee VALUES ('Fred Flinstone','Quarry Worker','Rock Digger');
sqlite> INSERT INTO employee VALUES ('Wilma Flinstone','Finance','Analyst');
sqlite> INSERT into employee values ('Barney Rubble','Sales','Neighbor');
sqlite> INSERT INTO employee VALUES ('Betty Rubble','IT','Neighbor');
sqlite> .tables
employee
sqlite> SELECT Name FROM employee WHERE dept='Sales';
Barney Rubble
sqlite> SELECT * FROM employee;
Fred Flinstone|Quarry Worker|Rock Digger
Wilma Flinstone|Finance|Analyst
Barney Rubble|Sales|Neighbor
Betty Rubble|IT|Neighbor
sqlite> DELETE FROM employee WHERE dept='Sales';
sqlite> .output /tmp/bedrock.sql
sqlite> .dump
sqlite> .exit

一切似乎都很好,我退出了程序,但是在我再次进入sqlite3程序后,当我尝试.databases命令(但它出现在退出之前)时数据库不在那里,我不知道我知道如何再次修改它。

更新:

我设法在官方文档网站上找到了this page,它完美地完成了对我来说很好。但是在退出sqlite3应用程序后,我仍然在修改数据库和更新内容时感到困扰。 有什么方法可以与我选择的数据库进行交互吗?在创建数据库后添加/删除表?

1 个答案:

答案 0 :(得分:1)

你听起来很困惑,我认为你报道的一些内容是因为你只是在混乱中。

您可以随时修改数据库(包含数据和表结构)。即使在添加了数据之后。即使你离开了sqlite3程序。

在上面的示例中,有两个文件。一个是/tmp/bedrock.db。那是数据库。使用/tmp作为数据库并不是一个好主意,因为/tmp中的文件已被删除。无论如何,您可以使用sqlite3 /tmp/bedrock.db重新连接到该数据库。

请注意,在使用sqlite3命令时,必须包含数据库。如果你在没有数据库的情况下启动sqlite3,那么.databases命令wil 就会显示数据库。

另一个文件是/tmp/bedrock.sql。那只是你用来创建数据库的sql。通常没用,通常你不创建它。它在该示例中创建的原因是因为该示例是从旧版本的sqlite更新的。但这不是你需要担心的事情。如果我是你,我会完全忘记这个文件。

如果尚未删除(因为它在/tmp中),那么您现在可以使用sqlite3 /tmp/bedrock.db连接到您的数据库并继续修改它。