私のPCから.bmpをblob
フィールドを含むデータベースに保存しようとしています。PCからデータベースblobフィールドに.bmpを保存しようとしています
私は現在、ここからのコードで働いています:
How to insert image into database using TADOQuery Component Only
私は新しいフォームを作成し、そこに必要なコンポーネントを追加しました。それは次のものが含ま
- :3
TButton
、1TOpenDialog
と1TImage
- ボタンSalveaza(保存)
Button3
あるとModalResult
を持ってこれは、フォームがどのように見えるかです
mrOk
- ボタンIncarca Im agine(ロードイメージ)
Button1
- ボタンがをキャンセルさ
Cancel
プロパティがチェックさとmrAbort
からModalResult
セットIncarcaは(ボタン1を)想像するコードボタンを持っている、Button2
ですこれはです:
procedure TaddImagineForm.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
end;
Salveaza(ボタン3)という名前のボタンのコードは次のとおりです。
私は私は他のものと一緒に、Data module
に位置しています(comenziQuery
という名前)を使用してい procedure TaddImagineForm.Button3Click(Sender: TObject);
var
Field: TBlobField;
Stream: TStream;
begin
if dbmodule.comenziQuery.Active and (Image1.Picture.Graphic <> nil) then
begin
dbmodule.comenziQuery.Insert;
Field := TBlobField(dbmodule.comenziQuery.FieldByName('pscreen')); // ensure it ís a blob
Stream := dbmodule.comenziQuery.CreateBlobStream(Field, bmWrite);
try
Image1.Picture.Graphic.SaveToStream(Stream);
finally
Stream.Free;
dbmodule.comenziQuery.Post;
end;
end;
end;
TSQLQuery
dbmodule(のようなDataSource
は、DataSet
、SQLConnection
など...)データモジュールの名前は- データベース内の列を使用して、その.bmpイメージは、pscreenという名前で、
mediumblob
タイプに設定されています。
は何(ビューのおそらく私の初心者のポイントに)起こるべき
- 今含まれている必要があり、選択した行のpscreenという名前
blob
フィールド。私はIncarcaは、私は、フォームを閉じる保存ボタンをクリックしますが、選択された行は、」doesnの後は、実際に- をhapenning何ボタン
を想像してみて押すことによって、私の
TOpenDialog
で以前に選択したBMPそのBLOBフィールドのbmpイメージで更新されます。エラーなし、警告なし、何もありません。その行のフィールドはNULLのままです。彼は私が新しいレコードを追加挿入し、使用していることを指摘したコメントにDsmをへ
EDIT
おかげで、私が選択してるものを更新していません。 私はこの行を参照しています:dbmodule.comenziQuery.Insert;
私は選択しているレコードを更新するために何とかコードを変更する必要があります。
Delphi/SQLの初心者ですので、私は壁に頭を打つと正反対のことをしているように思えば謝罪します。私はRAD Studioの10シアトルを使用してい
データベースはMYSQL
で、データベースコンポーネントがdbmoduleというデータモジュール上に位置しており、次のものが含まれている:TSimpleDataSet
、TSQLQuery
、TDataSource
、TSQLConnection
- 彼らはdbExpress
コンポーネントです。
ありがとうございました!
は、あなたが挿入を使用しているdbmodule.comenziQuery.PostとStream.Free – whosrdaddy
を逆にしてみてください。これにより、追加のレコードがデータベースに追加されます。それはあなたがすることを意味しますか? – Dsm
@Dsm - いいえ、私は基本的にデータベースに既に存在する行を更新しようとしています。具体的には、pscreenフィールドは現在nullです。そこにイメージを追加したいと思います。私はマウスで、dbgridで、イメージを追加してこのフォームを起動したい行を選択しています。すべての行にidという名前のフィールドにID番号が含まれていれば、それは役に立ちます。 – Petzy