C # SQLite Connector Проблемы - PullRequest
1 голос
/ 15 мая 2011

С учетом кода:

        SQLiteCommand cmd = new SQLiteCommand("UPDATE \"Category\" SET \"name\"=?name, \"description\"=?description, \"color\"=?color, \"active\"=?active, \"parent\"=?parent WHERE \"id\"=?id", sql);  
        cmd.Parameters.Add("?id", DbType.Int32).Value = _id;  
        cmd.Parameters.Add("?name", DbType.String).Value = _name;  
        cmd.Parameters.Add("?description", DbType.String).Value = _description;  
        cmd.Parameters.Add("?color", DbType.Int32).Value = _color;  
        cmd.Parameters.Add("?active", DbType.Boolean).Value = _active;  
        cmd.Parameters.Add("?parent", DbType.Int32).Value = _parent;  
        cmd.Prepare();  
        cmd.ExecuteNonQuery();  

У нас проблема в том, что последняя строка выбрасывает

SQLite error  near "name": syntax error  

что за ИМО ерунда. Что-то еще должно происходить. Таблица подключена и открыта (как я могу читать из таблицы просто отлично), а все остальное работает просто отлично. По какой-то причине он просто не может справиться с этим простым обновлением.

РЕДАКТИРОВАТЬ: ОК. Я попытался вынуть поле с именем целиком и все еще без игры в кости. Я просто получаю сообщение об ошибке в поле описания. Это определенно не проблема с ключевыми словами.

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

Вы пробовали следующее?

cmd.Parameters.Add("@id", DbType.Int32);  
cmd.Parameters.Add("@name", DbType.String);  
...

cmd.Parameters["@id"].Value = _id;  
cmd.Parameters["@name"].Value = _name;  
... 
0 голосов
/ 16 мая 2011

Используйте квадратные скобки вокруг имен полей в синтаксисе sql, так как они также могут конфликтовать с зарезервированными словами. Скобки устранят эту проблему. Я не уверен, но и id, и name могут быть зарезервированными словами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...