【问题标题】:SQLite.SQLiteException: 'near "s": syntax error' when updating field in sqliteSQLite.SQLiteException: 'near "s": syntax error' 更新 sqlite 中的字段时
【发布时间】:2020-06-03 06:27:44
【问题描述】:

我目前正在处理 UWP 项目,我使用 sqlite 数据库。在这个项目中,我想更新 sqlite 表(classroomteam)中的字段。当我用撇号(')输入值时,它给出错误提示“SQLite.SQLiteException: '在“s”附近:语法错误'”

这是我用来将更新数据保存到表中的代码

public static async Task UpdateTeamName(ClassroomTeamItem classroomTeamItem)
    {
        IWAppUtils.PrintDebug("====Start ", CLASS_NAME, "UpdateTeamName()");
        ClassroomTeam classroomTeam = new ClassroomTeam()
        {

            TeamName = classroomTeamItem.TeamName,
            Id = classroomTeamItem.Id,

        };
        String teamName = classroomTeamItem.TeamName;
        SQLiteAsyncConnection conn = new SQLiteAsyncConnection(IWSQLite.DATABASE_NAME);
        //Task<int> a = conn.UpdateAsync(configInfo);
        await conn.ExecuteAsync("UPDATE classroomteam SET TeamName = '"  + classroomTeamItem.TeamName + "' WHERE Id = '" + classroomTeam.Id + "'");
        await conn.CloseAsync();
        IWAppUtils.PrintDebug("====End ", CLASS_NAME, "UpdateTeamName()");
    }

我尝试this 来解决我的问题,我所做的是在查询中应用 new String[] {classroomTeamItem.TeamName }。然后我没有收到任何错误,但值为存储为 System.String[] 而不是我在 sqlite 表中输入的值。我尝试的代码如下。

public static async Task UpdateTeamName(ClassroomTeamItem classroomTeamItem)
    {
        IWAppUtils.PrintDebug("====Start ", CLASS_NAME, "UpdateTeamName()");
        ClassroomTeam classroomTeam = new ClassroomTeam()
        {

            TeamName = classroomTeamItem.TeamName,
            Id = classroomTeamItem.Id,

        };
        String teamName = classroomTeamItem.TeamName;
        SQLiteAsyncConnection conn = new SQLiteAsyncConnection(IWSQLite.DATABASE_NAME);
        //Task<int> a = conn.UpdateAsync(configInfo);
        await conn.ExecuteAsync("UPDATE classroomteam SET TeamName = '"  + new String[] { classroomTeam.TeamName } + "' WHERE Id = '" + classroomTeam.Id + "'");
        await conn.CloseAsync();
        IWAppUtils.PrintDebug("====End ", CLASS_NAME, "UpdateTeamName()");
    }

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: sqlite uwp


    【解决方案1】:

    关于如何更新字段的sql字符串是:

    string SQL_UPDATE = "UPDATE " + TABLE_NAME + " SET Value = ? WHERE Key = ?";
    

    所以您可以尝试将更新字符串更改为

    await db.ExecuteAsync("UPDATE classroomteam SET TeamName = " + classroomTeamItem.TeamName + " WHERE Id = " + classroomTeam.Id);
    

    或者您可以使用 Table 方法最直接地查询特定数据,然后更新您的字段。例如:

    private async void update(ClassroomTeamItem classroomTeamItem)
    {
        var query = db.Table<ClassroomTeam>().Where(s => s.Id==classroomTeam.Id);
        var result = await query.ToListAsync();
        foreach (var s in result)
        {
            s.TeamName = classroomTeamItem.TeamName;
            await db.UpdateAsync(s);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2017-02-02
      • 2019-12-20
      • 2012-04-18
      相关资源
      最近更新 更多