我需要检查列是否存在,如果不存在则添加它.根据我的研究,看起来sqlite不支持IF语句,而应该使用case语句.
这是我到目前为止:
SELECT CASE WHEN exists(select * from qaqc.columns where Name = "arg" and Object_ID = Object_ID("QAQC_Tasks")) = 0 THEN ALTER TABLE QAQC_Tasks ADD arg INT DEFAULT(0);
Run Code Online (Sandbox Code Playgroud)
但我收到错误:"ALTER"附近:语法错误.
有任何想法吗?
我创建了以下方法,可在已存在的SQLite表中添加一列
public async void AddColumnMyNewColumn()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path);
await conn.ExecuteAsync("ALTER TABLE MyTable ADD COLUMN MyNewColumn bit DEFAULT 'False';");
}
Run Code Online (Sandbox Code Playgroud)
它在MyTable中创建一个新列MyNewColumn。
下次调用AddColumnMyNewColumn方法时,它将引发错误。
如何检查此列是否已创建?
我已经检查过这个和这个了,但是我不能将这些东西放在一起得到这样的东西。
public async void AddColumnMyNewColumn()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path);
bool columnExists;
//Check if column exists & set columnExists accordingly
if(!columnExists)
await conn.ExecuteAsync("ALTER TABLE MyTable ADD COLUMN MyNewColumn bit DEFAULT 'False';");
}
Run Code Online (Sandbox Code Playgroud)