数据库存储txt文本和jpg图片

环境:MySql+SQLyog+j2se+jdbc

存储文本用longtext类型

存储图片用blob类型

1、首先建表

create table t_t (
id int(16) NOT NULL AUTO_INCREMENT,
longText longtext,
picture blob,
PRIMARY KEY (`id`)
) ;

`longText` longtext,//文本txt
`picture` blob,//图片pic

数据库为t_test,表为t_t

2、jdbc操作,打开eclipse for j2se

		String jdbcName="com.mysql.jdbc.Driver";
		String dbUrl="jdbc:mysql://localhost:3306/t_test";
		String dbUserName="root";
		String dbPassword="123456";

		Class.forName(jdbcName);//加载驱动
		Connection conn=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//连接
		//构造第一个SQL语句,先不管图片,先插入文本
		String sql="insert into t_t values(NUll,?,NULL)";//?为第一个坑
		PreparedStatement pst=conn.prepareStatement(sql);

找材料:

在E盘建立两个TXT文档

  随便写一些文字,先不考虑有中文。

  

		File context=new File("e:/h01.txt");//File文件
		InputStream inputStream=new FileInputStream(context);//使用流
		pst.setAsciiStream(1,inputStream,context.length());//填第一个坑
		int result=pst.executeUpdate();//执行SQL语句

		if(result==1){//提示信息
			System.out.println("插入成功");
		}else{
			System.out.println("插入失败");
		}

  有一些异常用 throws抛出(throws ClassNotFoundException, SQLException, FileNotFoundException)

转到数据库,看到插入了一个文本

取出文本,

		String sql="select * from t_t where id=?";//挖坑?
		PreparedStatement pst=conn.prepareStatement(sql);
		pst.setInt(1, 1);//第一个1是填第一个坑,第二个1是数据库中id为1的记录
		ResultSet rs=pst.executeQuery();
		if(rs.next()){
			Clob c=rs.getClob("longText");//使用Clob
			String str=c.getSubString(1, (int)c.length());//赋值给字符串
			System.out.println(str);//输出文本
		}

  运行如下:

结果与h01.txt的结果一致

图片picture的存储

  在E盘准备一张图片(002.jpg)

		//不考虑txt(设置为NULL)只考虑jpg
		String sql="insert into t_t values(NUll,NULL,?)";//挖坑
		PreparedStatement pst=conn.prepareStatement(sql);
		File pic=new File("e:/002.jpg");
		InputStream inputStream=new FileInputStream(pic);
		pst.setBinaryStream(1, inputStream,pic.length());//填坑
		int result=pst.executeUpdate();
		if(result==1){//提示信息
			System.out.println("插入成功");
		}else{
			System.out.println("插入失败");
		}

  eclipse插入成功,看数据库。

002.jpg已经插入到了数据库

下一步

取出图片到F盘

		String sql="select picture from t_t where id=?";//挖坑
		PreparedStatement pst=conn.prepareStatement(sql);
		pst.setInt(1,2);//填坑,2表示数据库的id=2的这条记录
		ResultSet rs=pst.executeQuery();
		if(rs.next()){
			Blob b=rs.getBlob("picture");
			//输出到F盘并且命名为003.jpg
			FileOutputStream out=new FileOutputStream(new File("f:/003.jpg"));
			out.write(b.getBytes(1, (int)b.length()));
			out.close();
		}

		conn.close();

  运行成功,F盘多了一个003.jpg与002.jpg相同

时间: 2024-10-11 04:55:14

数据库存储txt文本和jpg图片的相关文章

DDD开发框架ABP之本地化资源的数据库存储扩展

在上一篇<DDD开发框架ABP之本地化/多语言支持>中,我们知道,ABP开发框架中本地化资源存储可以采用XML文件,RESX资源文件,也提供了其他自定义的存储方式的扩展接口.ABP框架默认实现了前面两种方式,而数据库存储方式则需要自己扩展,大概是因为数据库存储涉及到了实体和仓储等方面的具体内容,不适合放在基本框架里面. 以数据库的方式存储本地化资源,一个最明显的好处就是方便修改,尤其是对于基于数据库的应用系统而言,可以提供统一的维护界面.接下来我们就来一步步地实现将本地化资源存储在数据库中.

C# 图片数据库存储、读取页面展示

一个网站,图片数据是一定存在的:图片存储如何处理,有很多方式. 自己总结两种:1.将图片保存为静态文件形式:(优点:文件容易转移.备份:缺点:文件丢失不易恢复)2.将图片转换为字节流获其他方式获取图片完整数据进行存储(优点:数据库保存,不易丢失:缺点:数据库空间增长较快) 之前图片保存是通过保存文件名称等基本信息,未对图片的原始内容进行处理:最近 想换种方式进行图片数据保存:特记录. 保存文件完整信息,常用的方式是将文件转换为二进制流,保存进数据库,当然也可以保存图片为base64 数据流. 1

PHP将富文本编辑后的内容,去除样式图片等只保留txt文本内容

1.从数据库读取富文本内容样式如下: <p style=";text-indent: 0;padding: 0;line-height: 26px"><span style="font-family: 微软雅黑;letter-spacing: 0;font-size: 14px">&nbsp; &nbsp;这是一个小小的测试!这是一个小小的测试!这是一个小小的测试!这是一个小小的测试!这是一个小小的测试!</span&g

oracle存储大文本clob、blob

1 package cn.itcast.web.oracle.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.Statement; 7 8 public class JdbcUtil { 9 private static String driver = "oracle.jdbc.driver.OracleDri

安卓数据持久化:文件存储、SharedPreferences存储以及数据库存储

Android系统中主要提供了三种方式用于简单的实现数据持久化功能: 文件存储(手机自带的内存).SharedPreferences存储以及数据库存储 当然还可以用sd卡存储 读入写出 下面是疯狂java讲义中的关于IO流的一些补充,回忆一下 1,文件存储 手机自带的内存,只能供当前应用程序访问,其他应用程序访问不了,程序卸载这些数据也会随着消失 原理: 基本是先获取一个文件的输出流,然后把信息write进去,最后关闭流 a,通过上下文类context的openFileOutput()方法获得一

数据库存储技术基础(一) 字典编码

说到数据库存储技术的基础,就要了解企业应用的数据特性以及面临的瓶颈. 1.企业应用的数据特性 事件产生数据 以快递追踪为例,信息读取过程包括当前读取操作的地点.时间戳.当前所处的业务流程(如收件.打包.运送)以及其他详细信息.当然,对网络游戏活动数据的分析就更为复杂.每个事件数据的数据集较小(Byte/KB)而每个实体可产生多个事件. 结构化/非结构化数据的结合 结构化数据有标准的格式存储即可被计算机自动处理.非结构化数据是不具有特定的数据解析模型,不能被计算机自动处理的数据,例如视频.图片与任

Python全栈-数据库存储引擎

一.存储引擎概述 在个人PC机中,不同的文件类型有不同的处理机制进从存取,例如文本用txt打开.保存:表格用excel读.写等.在数据库中,同时也存在多种类型的表,因此数据库操作系统中也应拥有对各种表的存取机制以实现对数据的操作,而表类型又称为存储引擎. 简单的说,存储引擎就是使得数据库存储数据.建立索引.数据更新以及查询等操作的实现方法.在关系型数据库中,数据的存储时以表的形式存储的,所以存储引擎也可以称为表类型即存储和操作此表的类型. 在Oracle等数据库中只存在一种存储引擎,所以数据存储

【BOOK】数据存储—文件存储(TXT、JSON、CSV)

数据存储 文本文件—TXT.JSON.CSV 关系型数据库—MySQL.SQLite.Oracle.SQL Server.DB2 非关系型数据库—MongoDB.Redis   文件打开 open(),第二个参数设置文件打开方式 ※      r:只读,文件指针在文件开头 ※      rb:二进制只读,文件指针在文件开头 ※      r+:读写方式,文件指针在文件开头 ※      w:写入,如果文件已存在,则覆盖:若文件不存在,则新建 ※      wb:二进制写入,如果文件已存在,则覆盖

Ubuntu上使用Redis数据库存储SessionID并实现Session共享

p { margin-bottom: 0.1in; direction: ltr; color: #00000a; line-height: 120%; text-align: left; orphans: 2; widows: 2 } p.western { font-family: "Liberation Serif", serif; font-size: 12pt } p.cjk { font-family: "Noto Sans CJK SC Regular"