SQLite.SQLiteException: "около" s ": синтаксическая ошибка" при обновлении поля в sqlite - PullRequest
1 голос
/ 19 февраля 2020

Я сейчас работаю над проектом UWP и использую базу данных sqlite. В этом проекте я хочу обновить поле в таблице sqlite (classroomteam). Когда я ввел значение с помощью apostrophe ('), выдается сообщение об ошибке «SQLite.SQLiteException: 'near' 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()");
    }

Я пытался это , чтобы решить моя проблема и то, что я сделал, это применение new String [] {classroomTeamItem.TeamName} в запросе. Тогда я не получил никакой ошибки, но значение сохраняется как System.String [], а не значение I введен в таблицу 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()");
    }

Буду признателен, если кто-нибудь сможет помочь мне решить эту проблему.

1 Ответ

1 голос
/ 19 февраля 2020

Строка sql о том, как обновить поле:

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

Так что вы можете попробовать изменить строку обновления на

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

Или вы можете запросить указанную Данные c проще всего сделать с помощью метода 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...