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 ファイルをプレビューする方法

推薦する

Xampp サーバーで MySQL パスワードを変更する方法 (画像付き)

今日、PHP で作業しているときに、Xampp サーバーに付属の mysql データベースを使用する...

win10 での mysql5.7.21 の詳細なインストール手順

この記事では、MySQL 5.7.21のインストールとインストール中に発生した問題を参考までに紹介し...

Linuxパフォーマンス監視コマンドの簡単な紹介

システムでさまざまな IO ボトルネック、メモリ使用量の増加、CPU 使用率の増加などの問題が発生し...

Vue ElementUI は非同期読み込みツリーを実装します

この記事の例では、vue ElementUI の非同期読み込みツリーを実装するための具体的なコードを...

CSSは、入力ボックスのフローティングテキスト効果を実現するために、placeholder-shown疑似クラスを使用します。

この記事では、:placeholder-shown 疑似クラスを使用して、純粋な CSS で浮動疑問...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

ES6 の Set および WeakSet コレクションの詳細な説明

目次セットは値が重複しない特別なコレクションです。セットコレクション基本API独自の価値判断セットを...

Windows Server 2012 でファイル サーバーを構築するための詳細な手順

ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...

JS での Reduce() メソッドの使用の概要

目次1. 文法2. 例3. その他の関連方法長い間、reduce() メソッドの具体的な使い方を理解...

ウェブサイトのAboutページの紹介コンテンツの書き方

公式、電子商取引、ソーシャル ネットワーキング、個人のいずれの Web サイトでも、訪問者に貴重な時...

Dockerを使用してphabricatorをインストールする方法

ここでは Ubuntu 16.04 システムを使用しています。 dockerを使用したインストールh...

Linux での NTP サーバー設定の詳細な手順

目次1. 環境設定1.NTPサーバー2. ビジネスサーバー2. NTPサーバーの設定1. chron...

JSX を使用してカルーセル コンポーネントを実装する方法 (フロントエンドのコンポーネント化)

JSX を使用してコンポーネント システムを構築する前に、例を使用してコンポーネントの実装原理とロ...

Dockerコンテナのデータを復元する方法

プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時...

要素テーブルテーブルコンポーネントの複数フィールド(複数列)ソート方法

目次必要:発生した問題:解決する:必要:要素テーブル内の複数の列を並べ替えるには、日付の並べ替えをク...