问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大家好怎样读取blob类型的数据 MYSQL 中

发布网友 发布时间:2022-05-01 21:24

我来回答

2个回答

懂视网 时间:2022-05-02 01:45

TABLE `blobtest` ( `primary_id` varchar(32) NOT NULL, `bank_id` varchar(32) NOT NULL, `bank_name` varchar(64) NOT NULL, `blob_data` blob NOT NULL, PRIMARY KEY (`primary_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘Blob类型数据存取测试用表‘

然后是数据库连接的工具类:

package blobtest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JDBCUtil {

 /*使用静态代码块完成驱动的加载*/
 static {
 try {
  String driverName = "com.mysql.jdbc.Driver";
  Class.forName(driverName);
 } catch (Exception e) {
  e.printStackTrace();
 }
 }
 /*提供连接的方法*/
 public static Connection getConnection() {
 Connection con = null;
 try {
  //连接指定的MMySQL数据库,三个参数分别是:数据库地址、账号、密码
  con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf8", "root", "w513723");
 } catch (Exception e) {
  e.printStackTrace();
 }
 return con;
 }
 /*关闭连接的方法*/
 public static void close(ResultSet rs, Statement stmt, Connection con) {
 try {
  if (rs != null)
  rs.close();
 } catch (Exception ex) {
  ex.printStackTrace();
 }
 try {
  if (stmt != null)
  stmt.close();
 } catch (Exception ex) {
  ex.printStackTrace();
 }
 try {
  if (con != null)
  con.close();
 } catch (Exception ex) {
  ex.printStackTrace();
 }
 }
}

接下来是真正的插入数据库的java代码:

package blobtest;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ReadWriteBlobwithMysql
{
 private Connection con;
 private Statement stmt;

 public Statement getStmt()
 {
 return stmt;
 }

 public void setStmt(Statement stmt)
 {
 this.stmt = stmt;
 }

 public ResultSet getRs()
 {
 return rs;
 }

 public void setRs(ResultSet rs)
 {
 this.rs = rs;
 }

 ResultSet rs;

 public Connection getCon()
 {
 return con;
 }

 public void setCon(Connection con)
 {
 this.con = con;
 }

 public void insert(Connection con) throws SQLException
 {
 String fileName = "E:\JavaProject\HelloWorld\src\blobtest\test.html";
 File file = new File(fileName);

 try
 {
  FileInputStream fis = new FileInputStream(file);
  String sql = "insert into blobtest values(‘12‘,‘0000‘,‘平安银行‘,?)";
  PreparedStatement prest = con.prepareStatement(sql);
  prest.setBlob(1, fis,file.length());
  prest.execute();
 } catch (FileNotFoundException e)
 {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

 public ReadWriteBlobwithMysql(Connection con)
 {
 this.setCon(con);
 try
 {
  stmt = con.createStatement();
 } catch (SQLException e)
 {
  e.printStackTrace();
 }
 }
 
 public static void main(String[] args)
 {
 Connection con = JDBCUtil.getConnection();
 ReadWriteBlobwithMysql dao = new ReadWriteBlobwithMysql(con);
 try
 {
//  dao.createTable();
  dao.insert(con);
 } catch (SQLException e)
 {
  e.printStackTrace();
 } finally
 {
  JDBCUtil.close(dao.getRs(), dao.getStmt(), dao.getCon());
 }
 }

}

使用select语句查看一下执行结果,第二条是使用程序插入的,其他的是使用sql语句直接插入的:

技术分享

下面是增加了从数据库读取blob数据的java代码,增加了queryBlob(。。。)函数:

package blobtest;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ReadWriteBlobwithMysql
{
 private Connection con;
 private Statement stmt;

 public Statement getStmt()
 {
 return stmt;
 }

 public void setStmt(Statement stmt)
 {
 this.stmt = stmt;
 }

 public ResultSet getRs()
 {
 return rs;
 }

 public void setRs(ResultSet rs)
 {
 this.rs = rs;
 }

 ResultSet rs;

 public Connection getCon()
 {
 return con;
 }

 public void setCon(Connection con)
 {
 this.con = con;
 }

 public void insert(Connection con) throws SQLException
 {
 String fileName = "E:\JavaProject\HelloWorld\src\blobtest\test.html";
 File file = new File(fileName);

 try
 {
  FileInputStream fis = new FileInputStream(file);
  String sql = "insert into blobtest values(‘12‘,‘0000‘,‘平安银行‘,?)";
  PreparedStatement prest = con.prepareStatement(sql);
  prest.setBlob(1, fis, file.length());
  prest.execute();
 } catch (FileNotFoundException e)
 {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

 public void queryBlob(String id, Connection con) throws IOException
 {
 String fileName = "E:\JavaProject\HelloWorld\src\blobtest\test1.html";
 String sql = "select * from blobtest where primary_id= ?";
 try
 {
  PreparedStatement prest = con.prepareStatement(sql);
  prest.setString(1, id);
  ResultSet rs = prest.executeQuery();
  while (rs.next())
  {
  Blob bl = rs.getBlob("blob_data");// 数据保存在表的blob_data字段中,这里取出这里保存的数据。
  InputStream is = bl.getBinaryStream(); // 查看blob,可以通过流的形式取出来。 注意一定要是用流的方式读取出来
  BufferedInputStream buffis = new BufferedInputStream(is);
  // 保存到buffout
  BufferedOutputStream buffout = new BufferedOutputStream(new FileOutputStream(fileName));
  byte[] buf = new byte[1024];
  int len = buffis.read(buf, 0, 1024);
  while (len > 0)
  {
   buffout.write(buf);
   len = buffis.read(buf, 0, 1024);
  }
  buffout.flush();
  buffout.close();
  buffis.close();
  }

 } catch (SQLException e)
 {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

 public ReadWriteBlobwithMysql(Connection con)
 {
 this.setCon(con);
 try
 {
  stmt = con.createStatement();
 } catch (SQLException e)
 {
  e.printStackTrace();
 }
 }

 public static void main(String[] args)
 {
 Connection con = JDBCUtil.getConnection();
 ReadWriteBlobwithMysql dao = new ReadWriteBlobwithMysql(con);
 try
 {
  // dao.createTable();
//  dao.insert(con);
  dao.queryBlob("12",con);
 } catch (IOException e)
 {
  e.printStackTrace();
 } finally
 {
  JDBCUtil.close(dao.getRs(), dao.getStmt(), dao.getCon());
 }
 }

}

技术分享

mysql存取blob类型数据

标签:ext   this   sql数据库   comment   idt   lex   存在   manage   create   

热心网友 时间:2022-05-01 22:53

HGLOBALhgImageMem = NULL;
LPVOIDlpvImageMem= NULL;
long lImageSize = rs->GetFields()->GetItem("图片")->ActualSize;
if(lImageSize > 0)
{
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 青海电视台的发展历程 属狗几月出生最好 属狗的几月出生最好农历2月几号出生的狗宝宝最好 属狗的生在几月好 本人属鸡、老公属牛、想生个明年的狗宝宝 请问几月出生的狗宝宝好? 老公属猴我属牛,生个狗宝宝几月出生最好 原厂气门嘴不用更换吗? 梦见在悬崖峭壁上把着又粗又长的绳子 高速公路车道一般是有多宽? 高速公路收费站车道宽度是多少? 高速公路单车道一般宽是多少米 笔记本电脑的声音突然变成杂音了,无论插耳机还是外放 电脑突然一放声音就全部变成噪音了,不知道是哪方便出现了问题 老脱发的危害 脱发对人都有哪些危害,脱发了怎么办? 脱发有哪些危害 脱发有什么危害吗? 脱发的危害有哪些该怎么办 老板辞退员工没有合同怎么办 公司和员工没有签合同怎么办 我是属龙的我老公是属牛的我们想生个狗宝宝几月的好啊 青海卫视是哪个台 86年属虎想生狗宝宝几月最好 哪个月份出生的狗宝宝命好,家里老黄历说是四月和十月是大利月,五月和十... 青海卫视节目表 属狗的几月出生最好、属狗的命运、属狗的和什么属相最配 青海卫视:青海省以及青藏高原上最重要的电视媒体之一 狗年几月出生好 青海电视台新台标的含义? 青海广播电视台街道门牌号是多少? 狗年几月生宝宝最好 青海电视台的台标含义 青海广播电视台是不是青海卫视? 青海电视台到底为什么要开办综艺卫视? 青海各州电视台的电话 青海人民广播电台的电台简介 青海省有哪些知名的媒体? 青海卫视的新台标是什么意思啊?我没看懂 青海卫视台没有诚信,报的节目广告骗人就一小时,诱骗人们的黑,假,广告的帮凶。青海电视台? 2005青海卫视事件是怎么回事