S_Images 列名のデータ型がイメージである Student_Images という名前の SQL 2008 Enterprise のテーブルがあります。画像をデータベースに挿入するにはどうすればよいですか。私はGoogleで検索し、50以上のサイトにアクセスしましたが、Base64に変換すると言う人もいれば、バイトなどに変換すると言う人もいますが、列のタイプが画像の場合はどうなりますか. 私を案内してください。
4 に答える
これをしないでください。データベースはファイル システムではありません。ファイル名を保持する列を作成し、画像をフォルダーに保存します。
JDBC API Javadoc を見てください。Blob オブジェクトを作成し、ファイルからデータを入力し、それを (Prepared)Statement の列として使用する必要があります。Blob を作成するためのコードを数行追加するだけで、他のデータ型と同じように機能します。
開始方法のチュートリアルへのリンクを次に示します。
他の回答が示唆するのとは異なり、バイナリ データを DB に格納することが要件に最適なシナリオがあります。ファイル システムへの参照だけを格納すると、バックアップに伴う頭痛の種や到達可能性の問題が発生する可能性があります (DB に接続できるからといって、ファイルが存在するファイル システムにアクセスできるとは限りません)。
データベースに画像を保存しないでください。最初のコメントで指摘したように、多くのスペースが必要です。パスとファイル名を保存することをお勧めします。
おそらく、あなたは正しい方法で検索しなかったのではないかと思います。
もう一つ。あなたの質問はすべて大文字で書かれています。それは避けてください。読みにくいため、回答が少なくなります。
Yes.
- If image size is big then it’s good to create meta data of image save its reference into database and real image save on disc. This is way faster than saving image in database.
- Saving image in database is good when your image size is small
If you want to test it to see how this works. Take any type of image and convert it to byte array stream as below:
BufferedImage originalImage = ImageIO.read(new File(
"resources/image/Test.png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
- Create blob column to save data in the table
- Execute insert statement to insert data into the table.