MySQL にテキストと画像を保存する方法

MySQL にテキストと画像を保存する方法

Oracle の大きなテキスト データ型

Clob 長いテキスト型 (MySQL ではサポートされていないため、代わりにテキストが使用されます)
BLOBバイナリタイプ

MySQL データベース

テキスト 長いテキストタイプ TINYTEXT: 256 バイト
  テキスト: 65,535 バイト => ~64kb
  中テキスト: 16,777,215 バイト => ~16MB
  LONGTEXT: 4,294,967,295 バイト => ~4GB
BLOBバイナリタイプ

例えば:

テーブルを作成する

CREATE TABLEテスト(
   id INT 主キー AUTO_INCREMENT、
   content LONGTEXT, -- テキスト フィールド img LONGBLOB -- 画像フィールド);

テキストを保存する場合は文字型で保存し、画像を保存する場合はバイナリ型で保存します。パラメータの設定方法の具体的な方法は、データの取得方法とは異なります。

例えば:

// テキストを保存するときは、パラメータを文字ストリーム FileReader リーダーに設定します
pstmt.setCharacterStream(1, リーダー);
// パラメータを取得する場合 // 方法 1:
リーダー r = rs.getCharacterStream("content");
// 長いテキストデータを取得する、方法 2:
System.out.print(rs.getString("content"));
// バイナリ画像を保存する場合 // バイナリストリームInputStreamにパラメータを設定します 
pstmt.setBinaryStream(1, in);
// バイナリ ストリームを取得します。InputStream in = rs.getAsciiStream("img");
/**
 * 写真を保存* 
 */
@テスト
パブリックボイドtest2(){
  文字列 sql = "テスト(img) 値に挿入(?)";
  試す{
    接続 = JDBCUtil.getConnection();
    pstmt = con.prepareStatement(sql);
    // パラメータを設定する // テキストを取得する File file = new File("f:/a.jpg");
    InputStream in = 新しい FileInputStream(file);
    // パラメータをバイナリ ストリームに設定します pstmt.setBinaryStream(1, in);
    // SQL を実行する
    pstmt.executeUpdate();
    in.close();
  }catch (例外 e) {
    e.printStackTrace();
  }ついに{
    試す {
      JDBCUtil.close(con, pstmt);
    } キャッチ (例外 e) {
      // TODO 自動生成されたキャッチブロック
      e.printStackTrace();
    }
  }
}
/**
 * 写真を取得 * 
 */
@テスト
パブリックボイドtest3(){
  文字列 sql = "select * from test where id=?;";
  試す{
    接続 = JDBCUtil.getConnection();
    pstmt = con.prepareStatement(sql);
    // パラメータを設定する pstmt.setInt(1, 2);
    // クエリを実行 rs = pstmt.executeQuery();
    while(rs.next()){
      byte[] buff = 新しいbyte[1024];
      入力ストリーム in = rs.getAsciiStream("img");
      整数l=0;
      出力ストリーム out = 新しい FileOutputStream(新しい File("f:/1.jpg"));
      while((l=in.read(buff))!=-1){
        out.write(バッファ、0、l);
      }
      in.close();
      out.close();
    }
  }catch (例外 e) {
    e.printStackTrace();
  }ついに{
    試す {
      JDBCUtil.close(con, pstmt);
    } キャッチ (例外 e) {
      // TODO 自動生成されたキャッチブロック
      e.printStackTrace();
    }
  }
}

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQLはOracleシーケンスに似たソリューションを実装しています
  • シーケンス関数を実装する MySQL コード
  • ソケット ''/tmp/mysql.sock'' 経由でローカル MySQL に接続できない解決策
  • よく使用される MySQL 関数の完全なリスト (分類および要約)
  • MySQLのマスタースレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。
  • データベースの読み取りと書き込みの分離のコード構成を実現するmysql+spring+mybatis
  • MySQL サービスを完全に削除する方法 (レジストリをクリーンアップする)
  • MySQLデータベースに画像を保存するいくつかの方法
  • Ubuntu での mysql のインストールと使用 (一般版)
  • insert と select を組み合わせて、「データベース内のフィールドの最大値 + 1 を挿入する」メソッドを実装する

<<:  Windows で virtualenv を使用して仮想環境を作成する方法 (2 つの方法)

>>:  Vue で pdfjs を使用して PDF ファイルをプレビューする方法

推薦する

Linux で pip 操作中にタイムアウトが発生する問題を解決する方法

Linuxインスタンスでpipを使用する際のタイムアウト問題を解決する方法pip は最も人気のある ...

カルーセルカルーセルケースのJS実装

この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています...

複数のフィールドを変更するためのMysql更新の構文の詳細な分析

MySQL でレコードを更新すると、構文は正しいのですが、レコードが更新されません...質問文実行前...

JavaScriptはXiaomi Mall公式サイトの完全なページ実装プロセスを模倣します

目次1. ホームページ制作1. ダウンロードアプリの制作2. ナビゲーションバーの制作3. カルーセ...

React コンポーネント間で通信する 3 つの方法 (シンプルで使いやすい)

目次1. 親子コンポーネント通信2. クロスレベルコンポーネント通信1. レイヤーごとに値を渡す2....

Vue の 2 択タブバー切り替えの新しいアプローチ

問題の説明プロジェクトに取り組んでいるときに、タブ バーの切り替え効果を作成する必要がある場合があり...

新しい ECMAscript オブジェクト機能の紹介

目次1. オブジェクトのプロパティ1.1 属性表記2. プロパティ名を計算する3.オブジェクトメソッ...

LinuxでLVMディスクを拡張する詳細な手順

1.ハードディスクを追加する2. パーティションの状態を確認します: fdisk -l 3. パーテ...

CSSオーバーフローメカニズムについての簡単な説明

CSS オーバーフローのメカニズムを詳細に学ぶ必要があるのはなぜですか?実際の開発プロセスでは、コン...

グリーンスタイルのウェブデザイン作品18点の最新コレクション

トイ・ストーリー3 オンラインマーケティングウェブサイトゼンモバイル鉄から鉄へスプラウトファンドバー...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

スネークゲームのアイデアを実現するためのJavaScript

JavaScriptゲームSnakeの実装アイデア(完全なコード実装)を参考までに説明します。具体...

Vueでスワイパープラグインを使用する際の問題を解決する

デモを作成するときにこのプラグインを使用していくつか問題が発生したため、プラグインの使用方法といくつ...

VM VirtualBox 仮想マシンのマウント共有フォルダ

一つの環境CentOS 7にVMware Toolsをインストールしてホストの共有フォルダへのアクセ...

Vue の img の src 画像アドレスの動的スプライシングの問題について

Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...