【问题标题】:Cannot insert value into database?(ERROR:The database file is locked)无法将值插入数据库?(错误:数据库文件被锁定)
【发布时间】:2018-03-20 15:35:04
【问题描述】:

我统一创建了一个sqlite数据库...并尝试使用此功能进行连接。

void AddScores(string conn)
    {
        IDbConnection dbconn;
        dbconn = (IDbConnection)new SqliteConnection(conn);
        dbconn.Open();

        using(IDbCommand dbCmd = dbconn.CreateCommand())
        {
            //    string sqlQuery = "SELECT Id FROM PickAndPlace ";
            string sqlQuery= "INSERT INTO PickAndPlace (Id) VALUES (324)";
            dbCmd.CommandText = sqlQuery;

            using(IDataReader reader = dbCmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    print(reader.GetInt32(0));
                }
                dbconn.Close();
                reader.Close();
                dbCmd.Dispose();
            }
        }
    }

如果我尝试 insert 值,则以下代码不起作用...并且显示此错误 “数据库文件已锁定: 数据库已锁定” 但是如果我尝试 select 效果很好。那么我的错误在哪里?

【问题讨论】:

    标签: c# sql sqlite


    【解决方案1】:

    Sqlite 通常接受单个“连接”。一旦一个应用程序连接到数据库,这意味着只需获取一个写锁,其他应用程序就不能访问它进行写操作,但可以访问它进行读操作。这就是您所看到的行为。有关其工作原理、各种锁定状态等的更多详细信息,请参阅 File Locking And Concurrency Control in SQLite Version 3

    但原则上,您只能打开一个连接。所以不知何故,你有不止一个。要么你忘记关闭一些连接,要么多个线程或应用程序试图修改它。或者可能发生了一些错误,导致锁定文件处于错误状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多