Gk_*_*999 0 c# sqlite windows-runtime sqlite.net
我创建了以下方法,可在已存在的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)
解决方案1.使用SQLite.Net
您正在使用SQLite.Net,因此您的表已映射到C#类,对吗?
如果您将属性添加到C#类中,则只需调用此
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path);
await conn.CreateTableAsync<MyTableClass>();
Run Code Online (Sandbox Code Playgroud)
并且您的新属性将作为列添加到您的表格中,以前的所有数据都不会更改
解决方案2.使用查询
(以列出表的所有列),然后您可以手动添加列)
使用 SQLite.net,\xc2\xb4s 很容易知道列是否存在,以防万一你真的需要它:
\n\nvar tableInfo = connection.GetTableInfo("YourTable");\nvar columnExists = tableInfo.Any(x => x.Name.Equals("ColumnName"));\nRun Code Online (Sandbox Code Playgroud)\n\n但正如之前提到的,connection.CreateTable<T>()或者connection.CreateTableAsync<T>()会为你添加新列,所以你不需要执行sql语句。
| 归档时间: |
|
| 查看次数: |
2848 次 |
| 最近记录: |