Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO + MySQL + ODBC, Не добавлется запись 
V
    Опции темы
Akella
  Дата 6.1.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



MySQL5, D2007, ADO, ODBC.
База живёт на хостинге (Joomla!1.5).
Установил дрова "MySQL ODBC 5.1". Соорудил строку подключения. Подключение проходит без ошибок. "Вижу" таблицы их поля в базе и т.д.
Запрос вставил в кверю:

Код

INSERT INTO 
  kvx_arenda
(
  ID

VALUE (
  10
);


Код

  ShowMessage(IntToStr(toDS.ExecSQL));

Возвращает 0 и запись не добавляется в талицу базы данных.
Я так понимаю, что в ADO не обязательно явных управлений транзакциями?

с ADO+MySQL первый раз столкнулся. Может я что не так делаю?

Provider=MSDASQL.1;Password=пароль;Persist Security Info=True;User ID=юзверь;Mode=ReadWrite;Extended Properties="DRIVER={MySQL ODBC 5.1 Driver};юзверь;PWD=пароль;SERVER=сервер.com.ua;DATABASE=имя базы;PORT=3306;"

Добавление записи через EMS SQL Manager проходит нормально.

Добавлено @ 17:26
Добавил ещё одну кверю, к ней прикрутил DataSource с DBGrid`ом
Код

SELECT * FROM kvx_arenda

пытаюсь открыть - ошибка:
Цитата

---------------------------
Error
---------------------------
Поставщик данных или другая служба вернули состояние E_FAIL.
---------------------------
OK   Details >>   
---------------------------


Это сообщение отредактировал(а) Rodman - 9.1.2009, 10:08
PM MAIL   Вверх
Akella
Дата 6.1.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



А если к ADOQuery не подключен DataSource, то ADOQuery открываетя нормально. Такая же ошибка и с ADOTable
PM MAIL   Вверх
Dobermann
Дата 6.1.2009, 17:36 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @  6.1.2009,  17:29 Найти цитируемый пост)
А если к ADOQuery не подключен DataSource, то ADOQuery открываетя нормально. Такая же ошибка и с ADOTable

А ты после изменений ADOTable/ADOQuery обновлял?
PM   Вверх
Akella
Дата 6.1.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



После изменения я лезу в EMS SQL Manager и переоткрываю таблицу.
Кверя возвращает 0, а по идее должна возвращать 1 в случае успешного ExecSQL
PM MAIL   Вверх
Dobermann
Дата 6.1.2009, 17:56 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @  6.1.2009,  17:46 Найти цитируемый пост)
После изменения я лезу в EMS SQL Manager и переоткрываю таблицу.

Ну а смысл переоткрывать таблицу, если в ADOTable/ADOQuery не изменены поля...2 раза по компоненту ADOTable/ADOQuery кликни, удали все поля, затем в контекстном меню выбери add all поля(уже не помню как там)

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


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Akella @  6.1.2009,  17:12 Найти цитируемый пост)
Поставщик данных или другая служба вернули состояние E_FAIL.

У меня такая ошибка была в следующей ситуации. Есть DBF-файл. В нем есть числовое поле длиной 4. В него запросом - не из моей программы, а из другой - вставляется число, цифр в котором больше, чем 4. Почему-то это проходит нормально, правда, не знаю, что именно вставляется при этом. Но когда после этого уже моя программа (через ADO, разумеется) пытается открыть эту таблицу, то вылезает такая вот ошибка, причём сама таблица открывается нормально, а ошибка вылезает на попытке получить AdoTable.Recordcount. 
С MySql не работал, поэтому ничего точно сказать не могу, но...


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dobermann
Дата 6.1.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Данкинг @  6.1.2009,  18:17 Найти цитируемый пост)
У меня такая ошибка была в следующей ситуации. Есть DBF-файл. В нем есть числовое поле длиной 4. В него запросом - не из моей программы, а из другой - вставляется число, цифр в котором больше, чем 4. Почему-то это проходит нормально, правда, не знаю, что именно вставляется при этом. Но когда после этого уже моя программа (через ADO, разумеется) пытается открыть эту таблицу, то вылезает такая вот ошибка, причём сама таблица открывается нормально, а ошибка вылезает на попытке получить AdoTable.Recordcount. 

Да потому что ADOtable надо обновлять после всяких изменений! Воткнул в это делая курсовую...
PM   Вверх
Данкинг
Дата 6.1.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Dobermann @  6.1.2009,  19:47 Найти цитируемый пост)
Да потому что ADOtable надо обновлять после всяких изменений! Воткнул в это делая курсовую... 

Каких всяких изменений? Ошибка вылезает при первом же обращении к .recordcount, а моя прога в эту таблицу вообще никаких изменений не вносит, она только читает данные.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dobermann
Дата 6.1.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Данкинг @  6.1.2009,  19:53 Найти цитируемый пост)
Каких всяких изменений? Ошибка вылезает при первом же обращении к .recordcount, а моя прога в эту таблицу вообще никаких изменений не вносит, она только читает данные.

И при этом БД подключена к ADOtable?!
PM   Вверх
Данкинг
Дата 6.1.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Dobermann @  6.1.2009,  20:00 Найти цитируемый пост)
И при этом БД подключена к ADOtable?! 

Ну да. Таблица, а не база. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 6.1.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Dobermann @  6.1.2009,  17:56 Найти цитируемый пост)
Ну а смысл переоткрывать таблицу, если в ADOTable/ADOQuery не изменены поля...2 раза по компоненту ADOTable/ADOQuery кликни, удали все поля, затем в контекстном меню выбери add all поля(уже не помню как там)

ничё не понял, зачем мне поля?? мне нужно всего лишь добавить/изменить данные в базе, тянуть на клиента мне не требуется.

Добавлено через 3 минуты и 22 секунды
Цитата(Данкинг @  6.1.2009,  18:17 Найти цитируемый пост)
У меня такая ошибка была в следующей ситуации. Есть DBF-файл. В нем есть числовое поле длиной 4. В него запросом - не из моей программы, а из другой - вставляется число, цифр в котором больше, чем 4. 

отпадает, один и тот же скрипт работает в EMS и не работает в ADO

Добавлено через 5 минут и 36 секунд
Цитата(Dobermann @  6.1.2009,  19:47 Найти цитируемый пост)
Да потому что ADOtable надо обновлять после всяких изменений! Воткнул в это делая курсовую... 

мне ничего обновлять не нужно, мне нужно 
1. сделать запрос типа select count(*) from table where id = :id
2. если есть такая запись, то полностью заменить в ней все поля, если нету записи с таким ID, то вставить новую. ВСЁ

Добавлено через 7 минут и 9 секунд
Вобщем ещё будут соображения? smile 
PM MAIL   Вверх
Akella
Дата 8.1.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Перехожу на ZeosDBO smile 
PM MAIL   Вверх
СЭНСЭЙ
Дата 17.1.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хочу работать с MySQL из Делфи, желательно 5
подскажите с чего начать.
Если есть - дайте примеры
PM MAIL   Вверх
Akella
Дата 17.1.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Скачай AnyDac первой версии, она бесплатная. Там есть и доки и примеры.
PM MAIL   Вверх
flomaster
Дата 1.7.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



WinXP SP2, Delphi 7, MySQL 5.0.67, MySQL ODBC 5.1 Driver
База данных прописана в источниках данных BDEAdministrator.
ADOConnection, строка подключения: Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=mybase;
Connected легко устанавливается в True.
При создании строки CommandText в ADODataSet открывается редактор, видны списки таблиц, полей.
Курсор clUseClient + ctDynamic.
Штатно  создается запрос. Например, "Select * from table".
При попытке открыть набор выдается Error: "Поставщик данных или другая служба вернули состояние E_FAIL."

При этом запрос с одним полем (ключевым) открывается нормально "Select id from table"
В привязанном гриде отображаются строки со значениями ключа.

С другим полем "select Name from table;" дает "состояние E_FAIL."

При установке курсора clUseServer и любом CursorType  получаю
Error: Dataset does not support bookmarks, which are required for multi-record data controls.

Zeos обязательно попробую, но хочу понять как открывать через ADO.
Куда рыть?

Это сообщение отредактировал(а) flomaster - 1.7.2009, 22:19
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




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


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

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