当前位置: 首页 > wzjs >正文

怎么快速建立一个网站企业网站的作用

怎么快速建立一个网站,企业网站的作用,网站交给别人做安全吗,网站做外链软件以下是使用 JDBC 操作 BLOB(二进制大对象)和 CLOB(字符大对象) 的完整示例代码,包含 插入、读取 操作及详细注释: 1. 数据库表结构(MySQL 示例) CREATE TABLE files (id INT AUTO_I…

以下是使用 JDBC 操作 BLOB(二进制大对象)和 CLOB(字符大对象) 的完整示例代码,包含 插入、读取 操作及详细注释:


1. 数据库表结构(MySQL 示例)

CREATE TABLE files (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),content BLOB,      -- 存储二进制文件(如图片、PDF)text_content CLOB  -- 存储大文本(如长文章)
);

2. Java 代码示例

import java.io.*;
import java.sql.*;public class BlobClobExample {// 数据库连接参数private static final String URL = "jdbc:mysql://localhost:3306/mydatabase";private static final String USER = "root";private static final String PASSWORD = "your_password";public static void main(String[] args) {Connection conn = null;try {// 1. 加载驱动并获取连接conn = DriverManager.getConnection(URL, USER, PASSWORD);conn.setAutoCommit(false); // 关闭自动提交,启用事务// 2. 插入 BLOB 和 CLOB 数据insertBlobAndClob(conn, "test_image.jpg", "large_text.txt");// 3. 查询并读取 BLOB 和 CLOB 数据readBlobAndClob(conn, 1);// 4. 提交事务conn.commit();System.out.println("操作成功,事务已提交!");} catch (SQLException e) {System.out.println("发生异常,事务回滚!");try {if (conn != null) conn.rollback();} catch (SQLException ex) {ex.printStackTrace();}e.printStackTrace();} finally {try {if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}// ------------------------ 插入 BLOB 和 CLOB 数据 ------------------------private static void insertBlobAndClob(Connection conn, String blobFilePath, String clobFilePath) throws SQLException, IOException {// SQL 语句String sql = "INSERT INTO files (name, content, text_content) VALUES (?, ?, ?)";try (PreparedStatement pstmt = conn.prepareStatement(sql)) {// 设置 name 参数pstmt.setString(1, "Sample File");// 设置 BLOB 参数(二进制文件)try (FileInputStream fis = new FileInputStream(blobFilePath)) {pstmt.setBinaryStream(2, fis, (int) new File(blobFilePath).length());}// 设置 CLOB 参数(文本文件)try (FileReader fr = new FileReader(clobFilePath)) {pstmt.setCharacterStream(3, fr, (int) new File(clobFilePath).length());}pstmt.executeUpdate();}}// ------------------------ 读取 BLOB 和 CLOB 数据 ------------------------private static void readBlobAndClob(Connection conn, int id) throws SQLException, IOException {// SQL 语句String sql = "SELECT name, content, text_content FROM files WHERE id = ?";try (PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setInt(1, id);try (ResultSet rs = pstmt.executeQuery()) {if (rs.next()) {String name = rs.getString("name");Blob blob = rs.getBlob("content");Clob clob = rs.getClob("text_content");// 保存 BLOB 到文件saveBlobToFile(blob, "output_image.jpg");System.out.println("BLOB 文件已保存!");// 保存 CLOB 到文件saveClobToFile(clob, "output_text.txt");System.out.println("CLOB 文件已保存!");}}}}// ------------------------ 辅助方法 ------------------------// 将 Blob 保存为文件private static void saveBlobToFile(Blob blob, String outputFilePath) throws SQLException, IOException {try (InputStream is = blob.getBinaryStream();FileOutputStream fos = new FileOutputStream(outputFilePath)) {byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = is.read(buffer)) != -1) {fos.write(buffer, 0, bytesRead);}}}// 将 Clob 保存为文件private static void saveClobToFile(Clob clob, String outputFilePath) throws SQLException, IOException {try (Reader reader = clob.getCharacterStream();FileWriter fw = new FileWriter(outputFilePath)) {char[] buffer = new char[4096];int bytesRead;while ((bytesRead = reader.read(buffer)) != -1) {fw.write(buffer, 0, bytesRead);}}}
}

代码说明

1. 插入数据(BLOB 和 CLOB)
  • BLOB 操作

    • 使用 FileInputStream 读取本地文件。
    • 通过 setBinaryStream() 将输入流传递给 PreparedStatement
    • 参数 2 对应 SQL 中的 ? 占位符(第二个参数)。
  • CLOB 操作

    • 使用 FileReader 读取文本文件。
    • 通过 setCharacterStream() 将字符流传递给 PreparedStatement
2. 读取数据(BLOB 和 CLOB)
  • BLOB 读取

    • 通过 getBlob("content") 获取 Blob 对象。
    • 使用 getBinaryStream() 获取输入流,逐块读取并写入目标文件。
  • CLOB 读取

    • 通过 getClob("text_content") 获取 Clob 对象。
    • 使用 getCharacterStream() 获取字符流,逐块读取并写入目标文件。
3. 关键注意事项
  • 流操作

    • 使用缓冲区(byte[]char[])逐块读写,避免内存不足。
    • 确保所有流在使用后关闭(通过 try-with-resources)。
  • 事务管理

    • 大文件操作建议在事务中执行,确保数据一致性。
    • 插入和读取操作需在同一个事务中完成(示例中已关闭自动提交)。
  • 异常处理

    • 捕获 SQLExceptionIOException,确保资源正确释放。
  • 数据库兼容性

    • 不同数据库的 BLOB/CLOB 类型可能不同(如 Oracle 的 BLOBCLOB,MySQL 的 LONGBLOBLONGTEXT)。

运行前准备

  1. 依赖:确保项目包含 MySQL JDBC 驱动(如 mysql-connector-java)。
  2. 文件路径
    • blobFilePath:替换为实际二进制文件路径(如 D:/test_image.jpg)。
    • clobFilePath:替换为实际文本文件路径(如 D:/large_text.txt)。

示例输出

BLOB 文件已保存!
CLOB 文件已保存!
操作成功,事务已提交!

扩展建议

  • 分块读取优化
    对于超大文件,可调整缓冲区大小(如 8192)或使用 ResultSet 的流式处理(getBinaryStream() 直接写入文件)。

  • 性能优化

    • 使用 setBlob()setClob() 方法,直接传递 InputStreamReader,避免内存缓存。
  • 安全性
    确保文件路径权限正确,防止越权访问。

通过此示例,你可以实现对大文件的高效存储和读取,适用于图片、文档等二进制数据或长文本的存储场景。


文章转载自:

http://VVGr4anP.yxbdL.cn
http://bTkh0GLN.yxbdL.cn
http://XogwYS7U.yxbdL.cn
http://gTl7EPLO.yxbdL.cn
http://A6wqtHkJ.yxbdL.cn
http://jLvV3AHI.yxbdL.cn
http://h9ZdozgY.yxbdL.cn
http://FlQxkPn9.yxbdL.cn
http://3GKkWTLt.yxbdL.cn
http://nPZQ1i6R.yxbdL.cn
http://KW5eTDBw.yxbdL.cn
http://GPyPoAWU.yxbdL.cn
http://c8QCXDpj.yxbdL.cn
http://zJ2WQn9K.yxbdL.cn
http://Yjvp6iID.yxbdL.cn
http://OEGeTvTy.yxbdL.cn
http://fn6069NQ.yxbdL.cn
http://p1Lu8n4m.yxbdL.cn
http://f4fgEEfP.yxbdL.cn
http://GBG3D8J2.yxbdL.cn
http://gdfqcd5k.yxbdL.cn
http://tptfPZPg.yxbdL.cn
http://G06fxgim.yxbdL.cn
http://pmRnoOYG.yxbdL.cn
http://AbCSdIKM.yxbdL.cn
http://4eF2OSy2.yxbdL.cn
http://ZrGn8ayh.yxbdL.cn
http://gK3LENmr.yxbdL.cn
http://KcUKCywe.yxbdL.cn
http://lNSa0v1L.yxbdL.cn
http://www.dtcms.com/wzjs/661511.html

相关文章:

  • seo和网站建设那个先学wordpress发广告
  • 做高端网站的网络公司中国移动idc建设网站
  • 广州企业网站找哪里网站的内链优化怎样做
  • wordpress 标签井号取消连云港seo
  • 常州建行网站二手房交易注意事项
  • 网站改版 报价网站建设陆金手指科捷14
  • 做外贸首先要做网站wordpress减少数据库连接
  • wordpress主题无法安装这个包网站建设内部优化
  • html做的好看的网站深圳口碑好的vi设计公司
  • 顺德网站开发潍坊专业网站建设
  • nodejs 网站开发模块模板网站建设哪家专业
  • 网新网站建设合同公司网页是什么
  • 网站加急备案flex网站模板
  • 转塘有做网站的吗html个人网站设计
  • 专业信息门户网站定制精准客户资源购买
  • 厦门网站制作企业网站美工培训学校
  • 网站建设空间域名是什么上海做网站比较有名的公司
  • 做视频网站应该选什么服务器wordpress 众筹主题
  • python完整网站开发项目视频尚品中国多年专注于高端网站建设
  • 凡科快图登录入口哈尔滨网站基础优化
  • 四川省省建设厅网站沈阳响应式网站建设
  • 高端网站建设做设计需要素材的常用网站有哪些
  • 高清无版权网站什么是网络营销的特点
  • html5网站源码带后台推广普通话手抄报句子
  • 一个专门做ppt的网站吗wordpress 自定义筛选
  • 网站建设找至尚网络山东大连
  • 网站推广软件免费营销者主要通过制作
  • 北京怎么建设网站wordpress仿安卓主题
  • 温州做网站建设公司哪家好怎样做网站收录
  • 巴中房产网站建设宁波网络营销方式