SQLite3 C ++查询附近" CASE":语法错误

时间:2015-05-21 08:33:03

标签: c++ sql sqlite

使用SQLite3 C ++实现虽然我认为这个错误更普遍。 我只是试图做一个声明:

  

"如果列' lastPlayed'表' Players'中不存在,更改表格并将其添加到表格中#34;

这是我的疑问:

    query = string("CASE WHEN COL_LENGTH('Players', 'lastPlayed') IS NULL ")
    +   " BEGIN "
    +   "ALTER TABLE Players "
    +   "ADD lastPlayed DATETIME DEFAULT now"
    +   " END "
    ;

错误:

  

near" CASE":语法错误

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

试试这个语法

CASE 
    WHEN expr THEN expr
    WHEN expr THEN expr
    .
    .
END

https://www.sqlite.org/lang_expr.html

答案 1 :(得分:1)

您的CASE声明没问题。错误在于COL_LENGTH不是SQLite中的内置函数。

您可以执行的操作是删除CASE语句,并在代码中尝试更改Players表以添加lastPlayed列。然后将alter语句包装在try-catch块中。当列已经存在时,将抛出异常,否则表将被成功更改,您可以继续。