|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопрос про blob поле и mysql
Для авторизации надо использовать AES
Использую шифрацию - получаю на выходе string. Далее надо string засунуть в blob поле в базе данных mysql В базе данных mysql есть процедура внесения данных, которая напрямую отправляет данные в поле. Использую код myscript1.SQL.Text:='SELECT CreateUser('+QuotedStr(edit10.text)+','+QuotedStr( edit11.Text)+','+QuotedStr(edit9.Text)+','+ QuotedStr(inttostr(combobox1.ItemIndex))+','+Quote dStr(edit5.Text)+','+mycode+','+ QuotedStr('1')+')'; MyScript1.Execute; где mycode - переменная типа string с уже закодированным с помощью AES кодом Вылетает ошибка несовместимости типов данных. Как мне в Delphi создать поле blob, которое поймет mysql и нормально пройдет через запрос? Компоненты: mydac 5.80 delphi2010 mysql 5.1 Спасибо. |
#2
|
||||
|
||||
Ну раз это строка, может имеет смысл ее так-же в QuotedStr заключить?
Код:
myscript1.SQL.Text:='SELECT CreateUser('+QuotedStr(edit10.text)+','+QuotedStr( edit11.Text)+','+QuotedStr(edit9.Text)+','+ QuotedStr(inttostr(combobox1.ItemIndex))+','+QuotedStr(edit5.Text)+','+QuotedStr(mycode)+','+ QuotedStr('1')+')'; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Да, я тоже так сначала подумал, однако это выбивает программу в Access Violation
Как это диагностировать на стороне клиента (т.е. Delphi) для меня загадка |
#4
|
|||
|
|||
Ну и главный вопрос - как отправить параметр blob?
|
#5
|
||||
|
||||
неправильно кодируете, надо так:
Код:
procedure TForm1.btnCreateQueryClick(Sender: TObject); var MimeCoder: TStringFormat_MIME64; S: TMemoryStream; begin if dlgOpen.Execute then begin MimeCoder := TStringFormat_MIME64.Create; S := TMemoryStream.Create; S.LoadFromFile(dlgOpen.FileName); try memQuery.Lines.Text := 'INSERT INTO Images (FilePath, Image) ' + #10 + 'VALUES (''' + dlgOpen.FileName + ''', ' + #10 + 'MimeToBin(''' + MimeCoder.StrTo(S.Memory, S.Size) + '''))'; btnExecuteQuery.Enabled := True; finally MimeCoder.Free; S.Free; end; end; end; |