簡體   English   中英

SQLite.NET檢查表中是否存在列

[英]SQLite.NET Check if column exists in table

我創建了以下方法,在已存在的SQLite表中添加一列

public async void AddColumnMyNewColumn()
{
    SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path);
    await conn.ExecuteAsync("ALTER TABLE MyTable ADD COLUMN MyNewColumn bit DEFAULT 'False';");
}

它在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';");
}

解決方案1.使用SQLite.Net

您正在使用SQLite.Net,因此您的表已映射到C#類,對嗎?

如果您將屬性添加到C#類中,則只需調用此

SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path); 

await conn.CreateTableAsync<MyTableClass>();

並且您的新屬性將作為列添加到您的表格中,以前的所有數據都不會更改

解決方案2.使用查詢

(以列出表的所有列),然后您可以手動添加列)

SQLite模式信息元數據

使用SQLite.net,很容易知道是否存在一列,以防萬一您確實需要它:

var tableInfo = connection.GetTableInfo("YourTable");
var columnExists = tableInfo.Any(x => x.Name.Equals("ColumnName"));

但是如前所述, connection.CreateTable<T>()connection.CreateTableAsync<T>()將為您添加新列,因此您無需執行sql語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM