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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2007, 17:00   #1
Mitriy
Пользователь
 
Регистрация: 08.07.2007
Сообщений: 47
По умолчанию Помогите разобраться с MySQL5

Народ помогите разобраться с BD MySQl5.
Дело в следующем:
Создаю бд в MySQl
далее создаю в бд таблицу
Соединяю бд с дельфи с помощъю ADO.
Соединяется нормально но при созании нового поля в бд вылетает ошибка, что невозможно добавить запись.

Скрипт таблицы:
Код:
CREATE TABLE `KompT` (
  `id` int(11) NOT NULL auto_increment,
  `komp` varchar(30) character set cp1251 default NULL,
  `Data_post` date default NULL,
  `Data_prodagi` date default NULL,
  `Status` varchar(20) default NULL,
  `opisanie` varchar(150) default NULL,
  PRIMARY KEY  (`id`),
  KEY `KompT` (`Komp`,`Data_post`,`Data_prodagi`,`Status`)
)
Соединение с БД происходит следующим образом:
1)ADOConnection1->Connection String->use Connection String->build
->Microsoft Ole DB Provider for ODBC Driver->указываю источник->
->проверяю конект все норм.
2)В ADOQuery1 в свойствай :
а)Connection ->ADOConnection1
б)SQL->SELECT * FROM KompT
в) Active->true
3)В DataSource1 в свойствах dataSet ADOQuery1
4)Кидаю на форму DBGrid1 в свойвах DataSource->DataSource1
5)Кидаю на форму кнопку "Добавить" (добавление происходит на второй форме)
6)На второй форме находятся Кнопка сохранить и DBEdit'ы которые соеденены с таблицой.
7)При нажатии кнопки написан следующий код:
If DataModule1.ADOQuery1.Modifed then DataModule1.ADOQuery.Post;
8)Жму ф9 запускается проект при добвлении записи вылетает ерор.

Кто работал с MySQL помогите разобраться что делаю не так.
Mitriy вне форума Ответить с цитированием
Старый 26.07.2007, 10:40   #2
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
//добавление
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('ALTER table table1 add (laa INT(10))');
ADOQuery1.ExecSQL;
//открытие таблицы
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('select * from table1');
ADOQuery1.ExecSQL;

ADOQuery1.Active:=true;
end;

для изменения уже существующей таблицы пользуемся оператором ALTER TABLE <имя табл> оператор(add) <имя столбца><тип данных><размер>.... В данном примере я использую AdoQuery. Сначала добавляю столбец, а потом и открываю таблицу....
Если ты будешь использовать adoQuery и AdoTable , то, НАВЕРНОЕ, может возникнуть ошибка дублирования данных..... НО я не пробовал
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 26.07.2007 в 10:44.
Pitbull вне форума Ответить с цитированием
Старый 28.07.2007, 17:05   #3
Mitriy
Пользователь
 
Регистрация: 08.07.2007
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Pitbull Посмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
//добавление
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('ALTER table table1 add (laa INT(10))');
ADOQuery1.ExecSQL;
//открытие таблицы
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('select * from table1');
ADOQuery1.ExecSQL;

ADOQuery1.Active:=true;
end;

для изменения уже существующей таблицы пользуемся оператором ALTER TABLE <имя табл> оператор(add) <имя столбца><тип данных><размер>.... В данном примере я использую AdoQuery. Сначала добавляю столбец, а потом и открываю таблицу....
Если ты будешь использовать adoQuery и AdoTable , то, НАВЕРНОЕ, может возникнуть ошибка дублирования данных..... НО я не пробовал
ALTER TABLE ADD -это вставка солбца, а мне надо добавить запись а не столбец
Mitriy вне форума Ответить с цитированием
Старый 29.07.2007, 21:29   #4
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Mitriy Посмотреть сообщение
ALTER TABLE ADD -это вставка солбца, а мне надо добавить запись а не столбец
insert into table1(поле1,поле2) values(значени1,значение2)

можно вот так
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
//добавление
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('insert into table1('поле1','поле2') values ( : d1,: d2)'); // только тут не нужно пробела между двоеточием и d....
ADOQuery1.params[0].value:= .......;
ADOQuery1.params[1].value:= .......;
ADOQuery1.ExecSQL;

ADOQuery1.Active:=true;
end;


Если у тебя ODBC 5.0 есть ,то можно использовать процедуры.... Принцип тот же.... Insert into.....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 29.07.2007 в 21:33.
Pitbull вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переход с mysql4 на mysql5 andrey4623 SQL, базы данных 1 12.07.2008 06:00
Помогите разобраться! SerSasha Помощь студентам 4 09.06.2008 10:00
Помогите разобраться! Holodok Помощь студентам 12 02.05.2008 18:13
Помогите разобраться! Кот Microsoft Office Excel 3 14.08.2007 19:48