Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Всем известная проблема

4.0K
11 мая 2006 года
vesna
71 / / 04.10.2005
Здраствуйте.

Есть код:
Код:
void Page_Load(object s, EventArgs e)
{
String sConnStr = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + Server.MapPath("~/dbms/test.mdb");
OleDbConnection cn = new OleDbConnection(sConnStr);
String sComm = "INSERT INTO tTable (sTest, sTest2) VALUES ('test1', 'test2');";
OleDbCommand cm = new OleDbCommand(sComm, cn);
cn.Open();
cm.ExecuteNonQuery();
cm.Dispose();
cn.Close();
}

Не работает. "Operation must use an updateable query".
Проблема описана здесь http://support.microsoft.com/default.aspx?scid=kb;en-us;Q175168
Я проверил всё, что описано в статье. Вроде всё должно работать, но не работает.
На форуме я тоже нашел несколько тем.
Вот только что делать нигде не написано.
Более того. Я пользуюсь MS Web Developer'ом, кот. входит в состав VS. Там есть встроенный сервер.
Так вот. Если открывать сайт в VS просто как папку и тестить, используя встроенный в VS сервер, всё прекрасно работает. Если открыть сайт как виртуальный каталог IIS, то под управлением IIS генериться этот самый exception.
Размещал код у своего хостера. Та же самая проблема.
Кто-нибудь знает что нужно делать, чтобы заработало?
273
12 мая 2006 года
3A3-968M
1.2K / / 22.12.2005
Если ты используешь MSVS 2005, то для соединения с *.mdb файлом лучше используй класс AccessDataSource. С ним всё проще:
AccessDataSource mdb=new AccessDataSource();
mdb.DataFile = "~/dbms/test.mdb";
mdb.InsertCommand = "INSERT INTO tTable SELECT 'test1' As sTest, 'test2' As sTest2";
mdb.DataSourceMode = SqlDataSourceMode.DataSet;
mdb.Insert();
273
12 мая 2006 года
3A3-968M
1.2K / / 22.12.2005
Ну а если не MSVS2005, тогда предлагаю два варианта:
1) Создай запрос на добавление в самом Access, а потом запускать программно через хранимую процедуру.
2) Попробуй использовать метод ExecuteReader()
Ещё рекомендую посмотреть структуру изменяемой таблицы в Access, может там даталогическая ошибка вкралась
4.0K
12 мая 2006 года
vesna
71 / / 04.10.2005
Цитата:
Originally posted by 3A3-968M
Если ты используешь MSVS 2005, то для соединения с *.mdb файлом лучше используй класс AccessDataSource. С ним всё проще:
AccessDataSource mdb=new AccessDataSource();
mdb.DataFile = "~/dbms/test.mdb";
mdb.InsertCommand = "INSERT INTO tTable SELECT 'test1' As sTest, 'test2' As sTest2";
mdb.DataSourceMode = SqlDataSourceMode.DataSet;
mdb.Insert();


За совет спасибо. Использую VS 2005.
Я написал в службу поддержки воего хостера. Они ответили. У них че-то в IIS было не сконфигурировано, сейчас всё работает.
Но поскольку у меня на компьютере всёравно не пашет, пожалуй попробую воспользоваться умным советом.

273
14 мая 2006 года
3A3-968M
1.2K / / 22.12.2005
Цитата:
Originally posted by vesna
За совет спасибо. Использую VS 2005.
Я написал в службу поддержки воего хостера. Они ответили. У них че-то в IIS было не сконфигурировано, сейчас всё работает.
Но поскольку у меня на компьютере всёравно не пашет, пожалуй попробую воспользоваться умным советом.


В MSVS 2005 много объектов для работы с источниками данных, таких как AccessDataSource, ObjectDataSource, SiteMapDataSource. Кстати, при помощи последнего можно без особого напряжения создавать карту сайта.

4.0K
14 мая 2006 года
vesna
71 / / 04.10.2005
Цитата:
Кстати, при помощи последнего можно без особого напряжения создавать карту сайта.


Что я, собственно, и сделал :). Что касается остальных...
Это, конечно, хорошо, просто мне хотелось побыстрее сделать. Там кода-то три строчки...
Я считаю, проблема все-таки в IIS.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог