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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.04.2011, 12:00
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию Помогите найти косяк в SQL запросе

Проблема в запросе к БД MySQL:
При вызове хранимой процедуры, в таблицу добавляются данные. Так вот, при добавлении данных в таблицу, в varchar(255) поле вводятся тока цифры. На другие символы ругается что неправильный синтаксис (Unknown column "тут текст" in "fieldlist").

Собственно сам запрос:
Код:
CREATE PROCEDURE `addmessage`(IN var_table VARCHAR(50), IN var_user INT(10), IN var_text VARCHAR(255))
BEGIN
SET @query := CONCAT("SELECT COUNT(*) FROM ", var_table, " INTO @var_count");
PREPARE query FROM @query;
EXECUTE query;
DEALLOCATE PREPARE query;
  IF @var_count >= 10 THEN
  BEGIN
    SET @query := CONCAT("SELECT MIN(m_id) FROM ", var_table, " INTO @min");
    PREPARE query FROM @query;
    EXECUTE query;
    DEALLOCATE PREPARE query;
    SET @query := CONCAT("DELETE FROM ", var_table, " WHERE m_id = @min");
    PREPARE query FROM @query;
    EXECUTE query;
    DEALLOCATE PREPARE query;
  END;
  END IF;
SET @query := CONCAT("INSERT INTO ", var_table, "(m_user, m_date, m_text) VALUES (", var_user, ", NOW(), ", var_text, ")");  
PREPARE query FROM @query;
EXECUTE query;
DEALLOCATE PREPARE query;
END

Проблемное поле - m_text, вводится туда var_text. Тип у обох varchar(255).

Помогите. Хз где косяк.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110

Последний раз редактировалось ~TB~, 24.04.2011 в 12:08.
Ответить с цитированием
  #2  
Старый 24.04.2011, 12:44
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Подсказали где проблема. Мб кому пригодится.
SET @query := CONCAT("INSERT INTO ", var_table, "(m_user, m_date, m_text) VALUES (", var_user, ", NOW(), '", var_text, "')");
Нужно было взять текст в ' апострофы '.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
  #3  
Старый 24.04.2011, 15:12
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

дык все текстовые поля, double и их подобные нужно брать в одинарные или двойные кавычки, зависит от того как и где используете запрос.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #4  
Старый 04.05.2011, 08:40
BlackKat BlackKat вне форума
Прохожий
 
Регистрация: 04.05.2011
Сообщения: 5
Репутация: 10
По умолчанию

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

Код:
datamodule1.adoquery1.SQL.Add('where Nazvanie="'+CodeOblast.Text+'"');
Ответить с цитированием
  #5  
Старый 04.05.2011, 09:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
datamodule1.adoquery1.SQL.Add('where Nazvanie='''+CodeOblast.Text+'''');

Все апострофы там.
Ответить с цитированием
  #6  
Старый 04.05.2011, 09:11
BlackKat BlackKat вне форума
Прохожий
 
Регистрация: 04.05.2011
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо огромное !!!!! теперь все понятно и с кавычками вернее с апострофами
__________________
БОЛЬШОЕ СПАСИБО всем за помощь

Последний раз редактировалось BlackKat, 04.05.2011 в 09:13.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter