2014-07-16 42 views
2

什么是SQLite中的create table语句意味着返回?SQLite - 创建表(如果不存在)

我观察到create table if not exists返回01当表确实存在。返回值是表格是否存在的可靠指示?如果该表已存在,我希望该语句返回0,如果不存在则返回1,类似于insert语句。

+0

所以你用这种方法来确定表是否存在? – amphetamachine

+0

在此库(https://github.com/praeclarum/sqlite-net)中,如果它尝试迁移表(如果不存在,则使用create table)但是,检查0有时会失败,因为它会返回1 - 即使该表在执行语句之前已经存在:/ – Jamie

回答

1

if not exists语法使命令成功,即使表已经存在。它只是没有做任何事情。

我不确定你指的是“返回1”,除非你在谈论命令行客户端。在这种情况下,如果您只从create语句中删除if not exists,那么如果该表存在,该命令将返回1(表示失败)。

+0

使用SQLite-NET库,该命令使用ExecuteNonQuery执行,因此它使用SQLite3.Changes(connectionHandle)查询sqlite中的更改。 – Jamie

2

Changes返回受影响的行数。 对于CREATE TABLE语句,此值无意义。

有没有简单的方法来确定CREATE TABLE IF NOT EXISTS语句是否创建或不。 你应该事先检查PRAGMA table_info