[英]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.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.