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();
}
}