![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BLOB и параметрический запрос [D7, MySQL]
совсем чайник © (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 с любымтипом параметра ошибка одна и та же