Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2008, 13:55   #1
drakhar
Пользователь
 
Регистрация: 12.02.2008
Сообщений: 10
По умолчанию Работа с MySQL в Дельфи 7

Доброго дня уважаемые профи.Хотелось бы получить совет по поводу работы с Mysql через dbExpress, для подключения использую дрова от Core Lab, т.к. остальные компоненты никак не хотели соединяться с сервером.Вообщем суть вопроса вот в чем:пытаюсь добавить запись в таблицу и постоянно вылетает ошибка unknown column ' ' in field list когда в едит1 и едит2 вписывают буквы. С цифрами во всех полях добавление просиходит, но так же вылетает ошибка на iternal dataset: cursor not returned from query, подскажите пожалуйста как можно решить эту проблему?Сам я только начал работу с SQL, не могли бы вы еще подсказать где найти какие нибудь примеры работы с MySQL в Дельфи.
Заранее спасибо!

сам запрос:

SimpleDataSet1.DataSet.CommandText: =('insert into '+Combobox1.Text+'(name,genre,kol,p rice) values ('+Edit1.Text+','+Edit2.Text+','+Ed it3.Text+','+Edit4.Text+')');
drakhar вне форума Ответить с цитированием
Старый 08.08.2008, 14:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
постоянно вылетает ошибка unknown column ' ' in field list когда в едит1 и едит2 вписывают буквы
А ты проверял чему у тебя равен Combobox1.Text? и совпадают ли описания полей в запросе с полями в таблице указанной в Combobox1.Text?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.08.2008, 14:25   #3
drakhar
Пользователь
 
Регистрация: 12.02.2008
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты проверял чему у тебя равен Combobox1.Text? и совпадают ли описания полей в запросе с полями в таблице указанной в Combobox1.Text?
всего 3 таблицы, полностью идентичные по структуре.
Через комбобокс1 выбирается таблица для отображения в дбгрид, соответственно когда пытаюсь записать данные, комбобокс1 указывает в какую таблицу производить запись.
drakhar вне форума Ответить с цитированием
Старый 08.08.2008, 15:58   #4
Банзай
Пользователь
 
Аватар для Банзай
 
Регистрация: 21.08.2007
Сообщений: 89
По умолчанию

проверь правильно ли записаны name,genre,kol,price
и если среди них есть стринговый тип то с кавычками запиши
values ("'+Edit1.Text+'",'+
подписываюсь

Последний раз редактировалось Банзай; 08.08.2008 в 16:01.
Банзай вне форума Ответить с цитированием
Старый 08.08.2008, 16:45   #5
drakhar
Пользователь
 
Регистрация: 12.02.2008
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Банзай Посмотреть сообщение
если среди них есть стринговый тип то с кавычками запиши
values ("'+Edit1.Text+'",'+
Спасибо большое, действительно помогло
Запись теперь добавляется корректно!Но осталась ошибка iternal dataset: cursor not returned from query, здесь как быть не подскажете?
drakhar вне форума Ответить с цитированием
Старый 08.08.2008, 17:04   #6
Банзай
Пользователь
 
Аватар для Банзай
 
Регистрация: 21.08.2007
Сообщений: 89
По умолчанию

dbExpress-ом не пользовался, похоже что этот методом запроса используется для SELECT и после ожидает ответа сервера с запрашиваемыми данными, поищи у этого компонента другие способы передавать команду.
подписываюсь
Банзай вне форума Ответить с цитированием
Старый 09.08.2008, 02:29   #7
drakhar
Пользователь
 
Регистрация: 12.02.2008
Сообщений: 10
По умолчанию

Переделал все под SQLQuery, и если запрос выполнять через ExecSQL запись добавляется корректно, без ошибок, но не обновляется т.е. записи не видно пока не выполнится другой запрос, например на смену таблицы.
Если использовать SQLQuery.open / close как я понимаю эти функции работают с возвратом данных, то все та же ситуация с ошибкой cursor not returned from query.Вопрос в следующем, как организовать обновление таблицы сразу после выполнения запроса?Т.е. что бы после добавления записи происходило обновление и результат сразу был виден на дбгриде, без смены таблиц или выполнения других запросов?Спасибо!
drakhar вне форума Ответить с цитированием
Старый 01.12.2010, 20:29   #8
alxx
Новичок
Джуниор
 
Регистрация: 30.11.2010
Сообщений: 2
По умолчанию

блин у меня похожие траблы, исп. SQLQuery, SQLConnection, пишу запрос:

if userName.Text<>'' then
begin
s:=userName.Text;
SQLQuery1.SQL.Add('SELECT * FROM main WHERE uName='''+s+''');
end

подчеркивает три одинарные кавычки, если их не ставить, а оставить по одной, то пишет: Missing query, table name or procedure name
при таком коде:

if userName.Text<>'' then
begin
s:=userName.Text;
SQLQuery1.SQL.Add('SELECT * FROM main WHERE uName='+s);
end
alxx вне форума Ответить с цитированием
Старый 01.12.2010, 21:13   #9
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

если в SQLQuery есть параметризированные запросы, то попробуй через них...
А так вот есть СПЕЦИАЛЬНЫЙ компонент для работы с MySQL и Дельфи. Проверено, работает:
http://programmersforum.ru/showthread.php?t=118018
SELECT BEST FROM LIFE
Dimasw вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение к удаленной БД(MySQL) и работа с ней! IIpopoK БД в Delphi 2 29.12.2010 21:31
Работа с папками в Дельфи Космос Помощь студентам 2 10.10.2007 20:47
Работа с MySql zetrix PHP 1 18.06.2007 15:02