Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка синтаксиса в инструкции Update 
:(
    Опции темы
b3ndr
Дата 12.3.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.3.2009

Репутация: нет
Всего: нет



База MS Access. Есть код.
       
Код

                  vsWord wd = doc.Next();
                    //Получили слово, надо лезть в БД
                    OleDbDataAdapter thisAdapter = new OleDbDataAdapter("SELECT * FROM Main WHERE WORD='"+wd.ToString()+"'", thisConnection);
                    
                    OleDbCommandBuilder thisBuilder = new OleDbCommandBuilder(thisAdapter);
                    DataSet thisDataSet = new DataSet();
                    thisAdapter.Fill(thisDataSet,"Main");

                    if (thisDataSet.Tables["Main"].Rows.Count>0)
                    {
                        //есть такое
                        int a = (int) thisDataSet.Tables["Main"].Rows[0]["COUNT"];
                        a++;
                        thisDataSet.Tables["Main"].Rows[0]["COUNT"] = a;
                        thisAdapter.Update(thisDataSet, "Main");
// Здесь вызывает ошибку "Ошибка синтаксиса в инструкции UPDATE"
                    }
                    else 
                    {
                        //нет такого
                        thisDataSet.Tables["Main"].Rows.Add("aca",3);
                        //thisDataSet.Tables["Main"].Rows[thisDataSet.Tables["Main"].Rows.Count-1]["WORD"] = wd.ToString();
                        thisAdapter.Update(thisDataSet,"Main");
// Здесь вызывает ошибку "Ошибка синтаксиса в инструкции INSERT"
                    }



Почему могут возникать эти ошибки?
PM MAIL   Вверх
emmanuil
Дата 13.3.2009, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Код

OleDbCommandBuilder thisBuilder = new OleDbCommandBuilder(thisAdapter);
thisAdapter.UpdateCommand = thisBuilder.GetUpdateCommand();
thisAdapter.InsertCommand = thisBuilder.GetInsertCommand();


PM MAIL   Вверх
corpse56
Дата 26.3.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



та же самая проблема. причем идентичный код с компонентами для sql работает. а для Access не работает. emmanuil, Ваше решение не помогло...
PM MAIL   Вверх
emmanuil
Дата 26.3.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



corpse56, покажите полный код.
Предложенное решение, думаю, помогло в том примере, у Вас могут быть ошибки по другим причинам.
Кстати, b3ndr, не хорошо оставлять свой собственный вопрос без внимания!  smile 
PM MAIL   Вверх
corpse56
Дата 26.3.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



Разобрался! в запросах OLE имена таблиц ОБЯЗАТЕЛЬНО должны быть в квадратных скобках. OleDbCommandBuilder генерирует команды правильно, вот только квадратные скобки не ставит около имени таблицы.я написал свою UpdateCommand и все заработало.
вкратце это выглядит вот так:


Код

            OleDbDataAdapter Ole = new OleDbDataAdapter();
            Ole.SelectCommand = new OleDbCommand();
            Ole.SelectCommand.Connection = OleCon;
            Ole.SelectCommand.Connection.Open();
            Ole.SelectCommand.CommandText = "SELECT * FROM [User]";
            Ole.UpdateCommand = new OleDbCommand("update [User] set NameUser = '111111' where IDUser =3", OleCon);
            Ole.UpdateCommand.ExecuteNonQuery();

успехов!
PM MAIL   Вверх
Rififi
Дата 26.3.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



corpse56
имена таблиц ОБЯЗАТЕЛЬНО должны быть в квадратных скобках.
ничего подобного.
просто у тебя кривая таблица User, которая совпадает с зарезервированным словом
PM MAIL   Вверх
corpse56
Дата 27.3.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



и вправду!! щас пробовал на таблице Penalty - сработало без скобок. а ведь User выбирал с учетом того чтобы именно попробовать на другой таблице. я тогда подумал вдруг в таблице что-то не так. и попал опять на зарезервированное слово.
скажите, а слово Main тоже зарезервировано? изначально мне нужна таблица Main. и где посмотреть список всех зарезервированных слов для Access? ну и для MS SQL раз уж на то пошло?

Добавлено через 12 минут и 46 секунд
вот еще поправочка: поле например не может быть названо Password. это я так понял тоже зарезервированное слово. назвать его можно так, но вот потом синтаксические ошибки в запросах. изменил одну букву в названии этого поля - и все заработало. всем спасибо!
PM MAIL   Вверх
Rififi
Дата 27.3.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



corpse56
где посмотреть список всех зарезервированных слов для Access? 
microsoft access reserved keywords
PM MAIL   Вверх
corpse56
Дата 27.3.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



спасибо. посмотрел. но в списке не оказалось слова Password...
а Main кстати незарезервированное. у меня не работало из-за Password. почему с ним не работает, но гео нет в списке зарезервированных? у меня стоит аксесс 2002 сп3. юзаю VS 2005 c#
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0806 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.