Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BLOB и параметрический запрос [D7, MySQL]


Страницы:   1 2 3

совсем чайник ©   (2007-02-21 13:30:00) 

Здравствуйте, использую dbexpress и Mysql
Мне необходимо в запросе добавить в BLOB поле картинку.
Воспользовавшись примером на данном форуме написал такой код:


if rra.image<>'' then
 begin
   fproc.q1.SQL.Text:=fproc.q1.SQL.Text+',sepcimage= '':paramblob''';
   p:=tparam.Create(nil);
   p.Name:='paramblob';
   fproc.q1.Params.AddParam(p);
   fproc.q1.ParamByName('paramblob').DataType := ftBlob;
   fproc.Q1.ParamByName('paramblob').ParamType := ptInput;
   fproc.Q1.ParamByName('paramblob').LoadFromFile(rra.image,ftBlob);
 end;
try
 fproc.q1.ExecSQL(true);
 result:=0;
except
 result:=1;

И в результате значения параметра paramblob в BLOB поле добавляется просто ':paramblob' т.е. просто строчка...
Скажите пожалуйста почему так ? и как это исправить ?


совсем чайник   (2007-02-22 14:37:00) [1]

Простите ( виноват (( исправил, как же сразу не догадался ((
execsql(false)  (((  еще раз извиняюсь (
и второй вопрос сразу
а выбрать оттуда картинку каким образом корректно ?


Reindeer Moss Eater   (2007-02-22 14:19:00) [2]

Я пробовал вставлять блоб через параметры с квери настроенном в дизайне.
параметры патраметров настроены в дизайне. текст sql в рантайме не менялся. Не работает.
MySQL 4.0x


Johnmen   (2007-02-22 14:16:00) [3]

Пробуй - в дизайне прописать запрос/, определить параметр. В рантайме только ExecSQL.
И с какой стати ExecSQL( true)???????????? не понимаешь смысла...


совсем чайник   (2007-02-22 14:06:00) [4]

Я понял, просто криво описал (


Desdechado   (2007-02-22 14:03:00) [5]

> Попробовал с созданным параметром в disign-time и false  И true в paramcheck
Ты явно не понимаешь смысла этого свойства. Оно указывает, будут ли параметры создаваться автоматически при изменении SQL.Text


совсем чайник   (2007-02-22 14:02:00) [6]

Здесь в тексте не показалось конечно, так как paramcheck остался по умолчанию, т.е. true


совсем чайник   (2007-02-22 14:01:00) [7]

object sql: TSQLConnection
   ConnectionName = 'MySQLConnection'
   DriverName = 'MySQL'
   GetDriverFunc = 'getSQLDriverMYSQL'
   LibraryName = 'dbxmys30.dll'
   Params.Strings = (
     'DriverName=MySQL'
     'HostName=127.0.0.1'
     'Database=test'
     'User_Name=root'
     'Password='
     'BlobSize=-1'
     'ErrorResourceFile='
     'LocaleCode=0000'
     'Compressed=False'
     'Encrypted=False')
   VendorLib = 'libmysql.dll'
   Left = 56
   Top = 64
 end
 object q1: TSQLQuery
   SchemaName = 'root'
   MaxBlobSize = -1
   Params = <
     item
       DataType = ftUnknown
       Name = 'paramb'
       ParamType = ptUnknown
     end>
   SQLConnection = sql
   Left = 112
   Top = 168
 end

sql.Connected:=true;
q1.SQL.Clear;
q1.SQL.Add('insert into test1 (im) values (:paramb)');
q1.ParamByName('paramb').ParamType := ptInput;
q1.ParamByName('paramb').DataType := ftinteger;
q1.ParamByName('paramb').AsInteger:=2;
q1.ExecSQL(true);
sql.Connected:=false;


Project Project14.exe raised exception class EDatabaseError with message 'dbExpress Error: [0x0001]: Warning
Database Server Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near ':paramb)' at line 1'.


Johnmen   (2007-02-22 13:57:00) [8]

Пробуй [33] ParamCheck = True


совсем чайник   (2007-02-22 13:55:00) [9]

Попробовал с созданным параметром в disign-time и false И true в paramcheck, результат тот же, ошибка синтаксиса mysql


совсем чайник   (2007-02-22 13:53:00) [10]

пробовал с true и при этом создавал сам параметр в Disigntime, в runtime только задавала свойства этого параметра, пробовал с false, в этом случае создавал параметр и задавал его свойства в run-time


Johnmen   (2007-02-22 13:52:00) [11]


> совсем чайник

ParamCheck какой?


совсем чайник   (2007-02-22 13:46:00) [12]

на 4-й стандартная библиотека работет вроде как нормально.
для 5-й версии использую dbx4mysql.dll тоже нареканий не было пока (


Reindeer Moss Eater   (2007-02-22 13:43:00) [13]

начиная с версии 4.1 dbx не совсем дружит с мускулом. В частности нет поддержки новой аутентификации. надо либо убирать пароль, либо переводить юзера на старую модель.
Возможно что и работа с блобами там отъехала.


совсем чайник   (2007-02-22 13:36:00) [14]

Знать бы где это искать в документации.
Если у вас работают запросы с параметрами, не могли бы вы мне сказать на какой версии и, если есть возможность, дать дистрибутив вашей версии ?


Val   (2007-02-22 13:27:00) [15]

мне не говорят его версии ничего. что говорит его дока по поводу параметров?


совсем чайник   (2007-02-22 13:22:00) [16]

проверял на:
4.1.16-max
5.0.23


Val   (2007-02-22 13:17:00) [17]

твоя версия mysql вообще, о параметрах знает?


совсем чайник   (2007-02-22 12:54:00) [18]

sql.Connected:=true;
q1.SQL.Clear;
q1.SQL.Add('insert into test1 set im=:paramb');
q1.ParamByName('paramb').ParamType := ptInput;
q1.ParamByName('paramb').DataType := ftinteger;
q1.ParamByName('paramb').AsInteger:=2;
q1.ExecSQL(true);
sql.Connected:=false;

Аабсолютно таже реакция (


Reindeer Moss Eater   (2007-02-22 12:50:00) [19]

Про любой тип не надо. Любой как раз работал всегда.


совсем чайник   (2007-02-22 12:48:00) [20]

Вобщем перепутал пока постил, но думаю смысл понятен:
при использовании обоих вариантов синтаксиса insert с любымтипом параметра ошибка одна и та же


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо