Criar uma tabela se não existir uma instrução em SQLite

tenho uma aplicação WPF onde acedo a uma base de dados SQLite via ADO.NET ([5]} http://adodotnetsqlite.sourceforge.net até agora tudo funciona bem, mas quando tento executar o seguinte SQL:

 sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS notes (id integer primary key, text varchar(100));";
 sqlite_cmd.ExecuteNonQuery();

tenho a seguinte excepção:

An exception of type 'Finisar.SQLite.SQLiteException' occurred in SQLite.NET.dll but was not handled in user code.
Additional information: near "NOT": syntax error

Quando eu remover a parte IF NOT EXISTS ele funciona bem, mas eu quero criar a tabela apenas se ela ainda não está lá. Há alguma coisa que eu esteja a fazer de errado?

 4
Author: mcr, 2015-03-13

1 answers

Esta pergunta tem algumas respostas que podem ser úteis. A partir dessa pergunta, porém, esta resposta sugere que o SQLite 3.3 e acima do suporte {[[0]}.

Com base nas respostas dessa pergunta, poderá tentar seleccionar a contagem das tabelas chamadas 'notes' usando esta consulta (ligeiramente modificada):

SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='notes';

Você pode então testar o resultado dessa consulta. Se houver 0 resultados, crie a tabela. Caso contrário, não crie a mesa.

 4
Author: Jeff, 2017-05-23 11:45:33