【问题标题】:C# SQLite Database Update Command Not Updating DatabaseC# SQLite 数据库更新命令不更新数据库
【发布时间】:2018-03-24 00:00:54
【问题描述】:

所以我正在为我的最后一年项目开发一个音乐播放器。它有一个 SQlite 数据库来存储专辑和曲目信息。下面的代码是一个更新函数,允许在移动轨道时更新轨道的文件路径。但是,虽然它没有返回错误,但数据库中的文件路径无法更新。关于可能出现什么问题的任何想法?

private void updateTrackFilePath(int albumid, String name, String filepath)
    {
        sql = "update tracks set filepath = (@filepath) where trackid = (@trackid)";
        mCommand = new SQLiteCommand(sql, mdbConnection);
        mCommand.CommandType = CommandType.Text;
        mCommand.Parameters.AddWithValue("@filepath", filepath);
        mCommand.Parameters.AddWithValue("@trackid", getTrackId(name, albumid));
        mCommand.ExecuteNonQuery();
    }

【问题讨论】:

  • 你的 mdbConnection 是什么?可能是它指向另一个数据库
  • 因为mCommand 不是在那里创建的,看起来你正在重用它?这是一个坏主意,因为它可能有 3 个或 5 个或 N 个参数从上次使用中遗留下来。根据需要创建、使用和处置它们(与 Connection 对象相同)。 AddWithValue 也是一个坏主意,尤其是使用 SQLIte
  • 什么是namealbumid? filepath? getTrackId(name, albumid)?

标签: c# database sqlite command


【解决方案1】:

我的猜测是在包含参数后生成的 SQL 查询字符串中存在语法错误。如果在 ExecuteNonQuery 方法处下断点,得到最终的查询字符串,可以直接在管理工具中运行(http://www.sqliteexpert.com/),看看是否有语法错误导致意外结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多