在我的C#应用​​程序中使用Alter或Drop命令时,SQLite数据库被锁定

时间:2019-05-08 12:01:06

标签: c# visual-studio sqlite

我已经创建了一个使用sqlite数据库进行数据存储的C#应用​​程序。

该应用程序已安装在客户端计算机上,并且工作正常。 现在,应用程序需要向数据库添加一个新列。当我向数据库添加新列时被锁定。

然后我想到了用一个新列创建一个新表,并从旧表中复制数据,然后删除旧表。 然后数据库也被锁定

以下是所使用的代码

 using (sqlite2 = new SQLiteConnection("Data Source=C:\\ProgramData\\CafeManagement\\Details.sqlite"))
                {
                    sqlite2.Open();

                    var cmd = sqlite2.CreateCommand();
                    cmd.CommandText = string.Format("SELECT * FROM sqlite_master WHERE type = 'table'");
                    var reader = cmd.ExecuteReader();
                    int nameIndex = reader.GetOrdinal("name");
                    while (reader.Read())
                    {

                        if (reader.GetString(nameIndex).Equals("Data"))
                        {
                            string sql = "create table NewData (Id INTEGER PRIMARY KEY, Name varchar(50),Total INTEGER,Cake varchar(50))";
                            SQLiteCommand command = new SQLiteCommand(sql, sqlite2);
                            command.ExecuteNonQuery();

                            string SQL1 = "INSERT INTO NewData(Id, Name, Total) SELECT Id, Name, Total FROM Data";
                            SQLiteCommand cmd1 = new SQLiteCommand(SQL1, sqlite2);
                            cmd1.ExecuteNonQuery();

                            string SQL2 = "DROP TABLE Data";
                            SQLiteCommand cmd2 = new SQLiteCommand(SQL2, sqlite2);
                            cmd2.ExecuteNonQuery();

                            sqlite2.Close();

                        }


                    }

                }

请提供一些解决方案。

0 个答案:

没有答案