C# egacy_alter_table=根据@TripeHound的要求打开。我用过(创建新的,移动数据,删除旧的,用旧的名字重新命名新的)如果你能在你的文章前面加上TL,那就太好了;DR:使用PRAGMA legacy\u alter\u表=ON@Max经过

C# egacy_alter_table=根据@TripeHound的要求打开。我用过(创建新的,移动数据,删除旧的,用旧的名字重新命名新的)如果你能在你的文章前面加上TL,那就太好了;DR:使用PRAGMA legacy\u alter\u表=ON@Max经过,c#,sqlite,uwp,C#,Sqlite,Uwp,egacy_alter_table=根据@TripeHound的要求打开。我用过(创建新的,移动数据,删除旧的,用旧的名字重新命名新的)如果你能在你的文章前面加上TL,那就太好了;DR:使用PRAGMA legacy\u alter\u表=ON@Max经过深思熟虑,我已经这样做了。。。但是,在大多数情况下,我建议重新排序命令,这样就不需要使用pragma。我已经以旧的方式重命名了一个表,修复它花费了几个小时,因为我没有足够的经验,一开始意识到引用表也必须被替换,不仅仅是那张复制错误的桌子。安全的


egacy_alter_table=根据@TripeHound的要求打开。我用过(创建新的,移动数据,删除旧的,用旧的名字重新命名新的)如果你能在你的文章前面加上TL,那就太好了;DR:使用PRAGMA legacy\u alter\u表=ON@Max经过深思熟虑,我已经这样做了。。。但是,在大多数情况下,我建议重新排序命令,这样就不需要使用
pragma
。我已经以旧的方式重命名了一个表,修复它花费了几个小时,因为我没有足够的经验,一开始意识到引用表也必须被替换,不仅仅是那张复制错误的桌子。安全的方式就像一个符咒!非常感谢。
//**Code where a column name is updated by creating new table**
string tableCommand = "PRAGMA table_info(Recordings)"; 
SqliteCommand createTable = new SqliteCommand(tableCommand, db);
SqliteDataReader query = createTable.ExecuteReader(); 
tableCommand = "PRAGMA foreign_keys = off; " + " 
BEGIN TRANSACTION; " +
" ALTER TABLE Customertbl RENAME TO _Customertbl_old; " +
" CREATE TABLE Customertbl ( " + " ID INTEGER PRIMARY KEY AUTOINCREMENT, " + " CustomerName NVARCHAR(100) NULL, " + " Password NVARCHAR(100) NULL, " + " 
pkID INTEGER NULL, " + " ActivityName NVARCHAR(255) NULL);" +
 " INSERT INTO Customertbl(Name,Password) " + " SELECT Name,Password " + " 
FROM _Customertbl_old ;" + " COMMIT; " + " PRAGMA foreign_keys=on; " + " 
DROP TABLE 
_Customertbl_old";

// **code where exception occur**
using (SqliteConnection db = new 
SqliteConnection("Filename=" + App.dbName)) 
{ 
db.Open(); 
SqliteCommand deleteCommand = new SqliteCommand(); 
try 
{ 
    deleteCommand.Connection = db; 
    deleteCommand.CommandText = "DELETE FROM Ownertbl where fkId = @id";  
    deleteCommand.Parameters.AddWithValue("@id", id);  
    deleteCommand.ExecuteReader()//here the exception occur ;  
    db.Close(); 
 } 
}