Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.08.2010, 19:05
Gman Gman вне форума
Новичок
 
Регистрация: 25.02.2010
Сообщения: 59
Репутация: -54
По умолчанию Ошибка при создании таблицы программно

У меня такая проблемка: Не могу создать программно таблицу в MySQl 5.0.

Код:
DataModul.DataModule2.ADOCommand1.CommandText:='CREATE TABLE '' '+imtab+' ''(''ima'' integer, ''adr'' CHAR(255))';
DataModul.DataModule2.ADOCommand1.Execute;
Что бы присвоить ADOCommand текст sql запроса, необходима его представить в виде строки, для этого он отделяется одинарными кавычками, а чтобы правильно задать запрос по правилам сиснтаксиса mysql имя табл и полей тоже должны быть в кавычках, при чем одинарных.
Самое интересное чтобы добавить строку или поставить условие, то можно использовать двойные кавычки. Т.О. программно у меня не выходит создать таблицу, помогите пожалуйста..
Ответить с цитированием
  #2  
Старый 08.08.2010, 19:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Напиши как команда должна быть, мы тебе напишем как такую строку собрать в дельфи...
Ответить с цитированием
  #3  
Старый 08.08.2010, 20:40
Gman Gman вне форума
Новичок
 
Регистрация: 25.02.2010
Сообщения: 59
Репутация: -54
По умолчанию

Код:
CREATE TABLE 'imtab'('ima' integer, 'adr' CHAR(120))

Примерно такой SQL запрос к MySQL должен быть, заранее спасибо.
Ответить с цитированием
  #4  
Старый 09.08.2010, 00:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
s := Format('CREATE TABLE ''%s'' (''%s'' integer, ''%s'' char(120))',['imtab','ima','adr']);

Посление параметры в [] - то, что будет подставленно в строку на место %s
Ответить с цитированием
  #5  
Старый 09.08.2010, 07:14
Gman Gman вне форума
Новичок
 
Регистрация: 25.02.2010
Сообщения: 59
Репутация: -54
По умолчанию

Спасибо за помощь. Я сделал так:
Код:
procedure TForm2.Button1Click(Sender: TObject);
var s:string;
begin
s:=Format('CREATE TABLE ''%s''(''%s'' CHAR(20), ''%s'' CHAR(120))',['imtab','ima','adr']);
ADOCommand1.CommandText:=s;
ADOCommand1.Execute;
end;
Но всё равно выдаёт ошибку, что сиснтаксис sql не правельный начиная от сюда: 'imtab'('ima' CHAR(20), 'adr' CHAR(120))

Последний раз редактировалось Gman, 09.08.2010 в 07:39.
Ответить с цитированием
  #6  
Старый 09.08.2010, 07:28
Gman Gman вне форума
Новичок
 
Регистрация: 25.02.2010
Сообщения: 59
Репутация: -54
По умолчанию

''%s'' - я так понимаю 4 одинарные кавычки здесь используются

Последний раз редактировалось Gman, 09.08.2010 в 07:45.
Ответить с цитированием
  #7  
Старый 09.08.2010, 09:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да. Именно 4 апострофа.
Скорее всего в самом запросе кавычки не нужны. Вообще странно, что требуются какие-то кавычки для создания таблицы. Стандарт никаких кавычек не предусматривает, а MySQL соответствует стандарту.
Попробуй все-таки вот так:
Код:
s:=Format('CREATE TABLE %s(%s CHAR(20), %s CHAR(120))',['imtab','ima','adr']);
Ответить с цитированием
  #8  
Старый 09.08.2010, 09:51
Gman Gman вне форума
Новичок
 
Регистрация: 25.02.2010
Сообщения: 59
Репутация: -54
По умолчанию

Спасибо!, теперь работает.
Впринципи я тоже нашёл способ, если кому надо:
Код:
 
ADOCommand1.CommandText:='CREATE TABLE `imtab` ( `ima` CHAR(10), `adr` CHAR(10))'
хочу обратить внимание на апострафы, которые я использовал для названий - на клавиатуре их можно найти на клавише ё в англ. раскладке.
По поводу стандарта SQL, вы правы он таких штук не предусматривает, я думаю возможно проблема связанна в версией MySQl.

Последний раз редактировалось Gman, 09.08.2010 в 09:59.
Ответить с цитированием
  #9  
Старый 09.08.2010, 13:48
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Для справки:
1. Названия полей, таблиц и баз данных в MySQL ограничиваются обратными апострофами (`).
2. Все значения полей (кроме числовых) в MySQL ограничиваются апострофами ('), либо кавычками (") (в последних версиях вроде кавычки не поддерживаются).
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter