精华内容
下载资源
问答
  • packagesundun.zfpt.gg....importjava.io.File;importjava.io.FileInputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;public cl...

    packagesundun.zfpt.gg.web;importjava.io.File;importjava.io.FileInputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;public classInsertPic {/*** 插入图片到数据库(可以批量)*/

    public static voidInsrtPicToDB(){

    String sql= "insert into rdp0112.rdp_psignature(loginid,signature) values (?,?)";

    String filepath= "E:/images";

    File file= newFile(filepath);

    String [] filelist=file.list();

    Connection conn= null;

    PreparedStatement pst= null;try{

    Class.forName("oracle.jdbc.driver.OracleDriver");

    System.out.println("开始连接数据库");

    String url= "jdbc:oracle:thin:@10.196.20.11:1521:orcl";

    String user= "user";

    String password= "pass";

    conn=DriverManager.getConnection(url, user, password);

    pst=conn.prepareStatement(sql);int m = 0;for(int i=0;i

    File reaFile= new File(filepath + "\\" +filelist[i]);

    FileInputStream fis= newFileInputStream(reaFile);

    String photoName= "";if(filelist[i].length() >= 6){

    photoName= filelist[i].substring(0, 6); //保存文件名当做一个字段的值

    pst.setString(1, photoName);

    pst.setBinaryStream(2, fis, (int) reaFile.length());

    m++;int n =pst.executeUpdate();

    System.out.println(n+ "条记录已经插入");

    }

    }

    System.out.println("本次一共导入" + m + "条");

    }catch(Exception e) {

    e.printStackTrace();

    }finally{try{if(pst != null){

    pst.close();

    }if(conn != null){

    conn.close();

    }

    System.out.println("数据库关闭");

    }catch(SQLException e) {

    e.printStackTrace();

    }

    }

    }public static voidmain(String[] args) {

    InsrtPicToDB();

    }

    }

    展开全文
  • MySQL中存储图片1 介绍...但有些时候,向MySQL插入图片更加容易管理。那么在MySQL中该怎么存储呢?参考资料[1]中有个相当清晰的例子,不过是基于MySQL图形界面的查询工具Query Brower的,你的机子上没有安装的话...

    MySQL中存储图片

    1 介绍

    在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况。一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦。但有些时候,向MySQL中插入图片更加容易管理。那么在MySQL中该怎么存储呢?

    参考资料[1]中有个相当清晰的例子,不过是基于MySQL图形界面的查询工具Query Brower的,你的机子上没有安装的话,可能得不到很好的理解。我在这里不在赘述,更详细的资料请看给出的链接吧。

    还有,[1]中的例子其实只是向我们说明了Query Brower的易用和强大,对我们在开发中实际应用不是很大。所以下面就让我们用JAVA写一个向MySQL中存储的简单实例。

    2 建表

    首先,先要在数据库中建表。我在名为test的数据库下建立了一个叫pic的表。该表包括3列,idpic, caption和img。其中idpic是主键,caption是对图片的表述,img是图像文件本身。建表的SQL语句如下:

    DROP TABLE IF EXISTS `test`.`pic`;

    CREATE TABLE `test`.`pic` (

    `idpic` int(11) NOT NULL auto_increment,

    `caption` varchar(45) NOT NULL default '',

    `img` longblob NOT NULL,

    PRIMARY KEY (`idpic`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    将上面的语句输入到命令行中(如果安装了Query Brower, 你可以按照参考[1]中的指示来建表,那样会更加方便。),执行,表建立成功。

    3 实现图像存储类

    表完成后,我们就开始写个Java类,来完成向数据库中插入图片的操作。我们知道,Java与数据库连接是通过JDBC driver来实现的。我用的是MySQL网站上提供的MySQL

    Connector/J,如果你用的是其他类型的driver, 在下面的实现过程中可能会有些许差别。

    3.1 装载JDBC驱动,建立连接

    JDK中提供的DriverManager接口用来管理Java Application 和 JDBC Driver之间的连接。在使用这个接口之前, DriverManager需要知道要连接的JDBC 驱动。最简单的方法就是用Class.forName()来向DriverManager注册实现了java.sql.Driver 的接口类。对MySQL

    Connector/J来说,这个类的名字叫com.mysql.jdbc.Driver。

    下面这个简单的示例说明了怎样来注册Connector/J Driver。

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.SQLException;

    public class LoadDriver {

    public static void main(String[] args) {

    try {

    // The newInstance() call is a work around for some

    // broken Java implementations

    Class.forName("com.mysql.jdbc.Driver").newInstance();

    // Connection con = DriverManager.getConnection(……)

    // ……

    } catch (Exception ex) {

    // handle the error

    }

    }

    向DriverManager注册了驱动后,我们就可以通过调用 DriverManager.getConnection()方法来获得和数据库的连接。其实在上面的例子中就有这条语句,只不过被注释掉了。在后面的实现中会有完整的例子。

    3.2 PreparedStatement

    完成上面的步骤后,我们就可以同过建立的连接创建Statement接口类,来执行一些SQL语句了。在下面的例子,我用的是PreparedStatement,还有

    CallableStatement,它可以执行一些存储过程和函数,这里不多讲了。下面的代码片断是向pic表中插入一条记录。其中(1)处Connection接口的对象con通过调用prepareStatement 方法得到预编译的SQL 语句(precompiled SQL statement);(2)处是为该insert语句的第一个问号赋值,(3)为第二个赋值,(4)为第三个,这步也是最该一提的,用的方法是setBinaryStream(),第一个参数3是指第三个问号,fis是一个二进制文件流,第三个参数是该文件流的长度。

    PreparedStatement ps;

    ps = con.prepareStatement("insert into PIC values (?,?,?)");// (1)

    ps.setInt(1, id); //(2)

    ps.setString(2, file.getName()); (3)

    ps.setBinaryStream(3, fis, (int)file.length()); (4)

    ps.executeUpdate();

    3.3 完整代码

    上面列出了完整的代码。

    package com.forrest.storepic;

    import java.io.File;

    import java.io.FileInputStream;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    /**

    * This class describes how to store picture file into MySQL.

    * @author Yanjiang Qian

    * @version 1.0 Jan-02-2006

    */

    public class StorePictures {

    private String dbDriver;

    private String dbURL;

    private String dbUser;

    private String dbPassword;

    private Connection con;

    private PreparedStatement ps;

    public StorePictures() {

    dbDriver = "com.mysql.jdbc.Driver";

    dbURL = "jdbc:mysql://localhost:3306/test";

    dbUser = "root";

    dbPassword = "admin";

    initDB();

    }

    public StorePictures(String strDriver, String strURL,

    String strUser, String strPwd) {

    dbDriver = strDriver;

    dbURL = strURL;

    dbUser = strUser;

    dbPassword = strPwd;

    initDB();

    }

    public void initDB() {

    try {

    // Load Driver

    Class.forName(dbDriver).newInstance();

    // Get connection

    con = DriverManager.getConnection(dbURL,

    dbUser, dbPassword);

    } catch(ClassNotFoundException e) {

    System.out.println(e.getMessage());

    } catch(SQLException ex) {

    // handle any errors

    System.out.println("SQLException: " + ex.getMessage());

    System.out.println("SQLState: " + ex.getSQLState());

    System.out.println("VendorError: " + ex.getErrorCode());

    } catch (Exception e) {

    System.out.println(e.getMessage());

    }

    }

    public boolean storeImg(String strFile) throws Exception {

    boolean written = false;

    if (con == null)

    written = false;

    else {

    int id = 0;

    File file = new File(strFile);        === strFile

    --图片路径+图片名字

    FileInputStream fis = new FileInputStream(file);

    try {

    ps = con.prepareStatement("SELECT MAX(idpic) FROM PIC");

    ResultSet rs = ps.executeQuery();

    if(rs != null) {

    while(rs.next()) {

    id = rs.getInt(1)+1;

    }

    } else {

    return written;

    }

    ps = con.prepareStatement("insert "

    + "into PIC values (?,?,?)");

    ps.setInt(1, id);

    ps.setString(2, file.getName());

    ps.setBinaryStream(3, fis, (int) file.length());

    ps.executeUpdate();

    written = true;

    } catch (SQLException e) {

    written = false;

    System.out.println("SQLException: "

    + e.getMessage());

    System.out.println("SQLState: "

    + e.getSQLState());

    System.out.println("VendorError: "

    + e.getErrorCode());

    e.printStackTrace();

    } finally {

    ps.close();

    fis.close();

    // close db con

    con.close();

    }

    }

    return written;

    }

    /**

    * Start point of the program

    * @param args CMD line

    */

    public static void main(String[] args) {

    if(args.length != 1) {

    System.err.println("java StorePictures filename");

    System.exit(1);

    }

    boolean flag = false;

    StorePictures sp = new StorePictures();

    try {

    flag = sp.storeImg(args[0]);

    } catch (Exception e) {

    e.printStackTrace();

    }

    if(flag) {

    System.out.println("Picture uploading is successful.");

    } else {

    System.out.println("Picture uploading is failed.");

    }

    }

    }

    4 总结

    到此,我们就介绍完了使用往

    MySQL

    保存图片的全过程。这个例子是个最简单的实例,读者可以根据自己的实际需要加入其它的一些功能,比如读取文件,删除等,使整个程序更加完善。在写这篇文章的时候主要参考了参考

    [2]

    ,在此谢过。参考

    [3]

    中是一个相当漂亮的例子,不仅有保存还有读取,而且是有非常直观的图形界面,感兴趣的可以深入研究。

    展开全文
  • 单元测试执行insert... 插入到mysql数据库中值为什么变成了这样: ![图片说明](https://img-ask.csdn.net/upload/201605/19/1463630105_182724.png) mysql表中对应的数值类型都是decimal的 这是为什么呢?
  • 先说MySql数据库传输...现在说JavaMySql传输图片 有点懒,代码写同一个类里了,做项目时记得把功能写不同package 3.数据库连接固定写法 //连接数据库地址 static String url = "jdbc:mysql://localhost:3306/

    先说MySql数据库传输图片

    1.设计MySql数据库表
    图片类型限制:
      tinyblob:255个字符
      blob:到65K字节
      mediumblob:16M字节(我觉得选这个合适)
      longblob:4GB
    在这里插入图片描述
    2.插入测试数据
    在这里插入图片描述
    现在说Java与MySql传输图片
    有点懒,代码写到同一个类里了,做项目时记得把功能写到不同package

    3.数据库连接固定写法

    //连接数据库地址
        static String url = "jdbc:mysql://localhost:3306/products";     //数据库名
        static String root = "root";    //账号
        static String pwd = "12138";    //密码
        static {
            try {   //注册驱动
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        //数据库连接方法
        public static Connection getConn(){
            Connection conn = null;
            try {
                conn = DriverManager.getConnection(url, root, pwd);
                System.out.println("数据库连接成功!");
            } catch (SQLException e) {
                System.out.println("数据库连接失败!");
                e.printStackTrace();
            }
            return conn;
        }
    
        //数据库的关闭连接方法
        public static void closeConn(Connection conn){
            if (conn != null){
                try {
                    conn.close();
                    System.out.println("数据库连接关闭!");
                } catch (SQLException e) {
                    System.out.println("关闭数据库失败!");
                    e.printStackTrace();
                }
            }
        }
    

    (提醒一下,写完一个方法可以测试一下,缩小bug范围)

    4.Java与MySql的访问依赖流,设计图片转换成流的方法

    //计算机文件都是以二进制的形式存在,Java提供了一系列的流完成传输
        //读取获取输入流————用于插入
        public static FileInputStream readPicIn(String path){
            FileInputStream picInputStream = null;
            try {
                picInputStream = new FileInputStream(new File(path));  //File可以指定路径
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            return picInputStream;
        }/*readPicIn*/
    
        //读取图片获取输出流————用于读取
        public static void readPicOut(InputStream in,  String targetPath){
            File file = new File(targetPath);   //图片输出位置
            String path = targetPath.substring(0,targetPath.lastIndexOf("/"));  //分解出存放路径,最后一个/位于文件命之前
            if (!file.exists()){     //判断是否存在
                new File(path).mkdir(); //如果目标文件不存在,在该路径创建文件夹
            }
    
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(file);
                /*固定写法*/
                byte[] buff = new byte[1024];    //定义一个字节数组作为缓冲区。
                int len = 0;    //len记住读取读入缓冲区的字节数
                while((len = in.read(buff)) != -1){    //判断是否读到文件末尾
                    fos.write(buff, 0, len);    //从第一个字节开始,向文件写入len个字节
                }
                fos.flush();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                if (fos!=null){
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }/*readPicOut*/
    

    5.从数据库读取图片

        //从数据库读取图片
        public static void picFromDB(){
    
            /*数据库存储的图片没有名称,要为图片命名需要在数据库另外开辟一个存储位置*/
    
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            try {   /*固定写法*/
                conn = getConn();   //连接数据库
                String sql = "Select name,picture from test where name = ?";  //不用*是方便书写代码时知道获取了哪些数据
                ps = conn.prepareStatement(sql);
                ps.setString(1, "love1.jpg");
                rs = ps.executeQuery();
                while(rs.next()){
                    String picName = rs.getString("name");
                    String targetPath = "res/" + picName;     //图片输出位置(我输出在项目的res文件夹)和图片名称
                    InputStream in = rs.getBinaryStream("picture");     //binary翻译是二进制————getbolo()方法不能转换成InputStream
                    readPicOut(in, targetPath);		//调用读取方法
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            finally{
                closeConn(conn);
                if (rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if (ps!=null){
                    try {
                        ps.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }/*picFromDB*/
    

    MySql存取图片只是存取图片,要多开辟一个name存取图片名称
    在这里插入图片描述
    运行程序前:
    在这里插入图片描述
    运行后:
    在这里插入图片描述
    最后说Java获取本地图片
    重点就是获取到文件路径,所以通过new FileDialog()对象能打开本地文件——补充说该类的show()方法过时,改用setVisible(true);

    直接上代码了,太晚了想睡觉,自己悟吧~

     //从本地插入图片到数据库
        public void picInsertDB(){
    
            //简单写一个按钮实现该功能
            JFrame jFrame = new JFrame("测试窗口");
            jFrame.setSize(200, 200);
            jFrame.setLocationRelativeTo(null);   //居中显示
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jFrame.setVisible(true);
    
            FileDialog fileDialog = new FileDialog(jFrame, "本地文件");
    
            jFrame.setLayout(null);
            JButton btnLocal = new JButton("选择文件");
            btnLocal.setFocusable(false);
            btnLocal.setBounds(0, 50, 200, 100);
            jFrame.add(btnLocal);
    
            /*为按钮添加打开本地文件功能*/
            btnLocal.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    fileDialog.setVisible(true);
                    String filePath =  fileDialog.getDirectory() + fileDialog.getFile(); //文件夹路径+文件名称
                    //System.out.println(filePath);
                    FileInputStream in = null;
                    /*这里有个坑,fileDialog.getDirectory() + fileDialog.getFile()=null+null————因为是String存储,所以判断是nullnull*/
                    if (!filePath.equals("nullnull") ){
                        in = readPicIn(filePath);    //调用上方封装方法
                    }
                    if(in != null){    /*固定写法*/
                        Connection conn = null;
                        PreparedStatement ps = null;
                        try {
                            conn = getConn();
                            String sql = "insert into test (id, name, picture)" +
                                    "values(?,?,?)";
                            ps = conn.prepareStatement(sql);
                            ps.setInt(1, 3);
                            ps.setString(2, "gg.jpg");
                            ps.setBinaryStream(3, in, in.available());
                            //Binary翻译是二进制,因为getbolo()方法失败了,这里我没有尝试setbolo()行不行
    
                            int count = ps.executeUpdate();
                            if (count>0){
                                System.out.println("插入成功");
                            }else {
                                System.out.println("插入失败!");
                            }
                        } catch (SQLException ex) {
                            ex.printStackTrace();
                        } catch (IOException ex) {
                            ex.printStackTrace();
                        } finally {
                            closeConn(conn);
                            if (ps!= null) {
                                try {
                                    ps.close();
                                } catch (SQLException ex) {
                                    ex.printStackTrace();
                                }
                            }
                        }/* if(in != null)*/
                    }
                }
            });
        }/*picInsertDB*/
    

    我是个喜欢听歌写代码的家伙,大家一起加油~

    关于Java组件布局位置的文章:
    https://blog.csdn.net/everything002/article/details/105904945
    关于Java访问MySql数据库的文章:
    https://blog.csdn.net/everything002/article/details/106203271

    展开全文
  • 本文使用mysql数据库举例插入图片到数据库和从数据库取出图片在页面显示:一、建表创建一个测试保存图片的表create table t_save_img(name varchar(200), 文件名称img longblob ,primary key(name))二、建实体类:...

    本文使用mysql数据库举例插入图片到数据库和从数据库取出图片在页面显示:

    一、建表

    创建一个测试保存图片的表

    create table t_save_img(

    name varchar(200),   文件名称

    img  longblob ,

    primary key(name)

    )

    二、建实体类:SaveImageInfo

    private String name; //文件名称

    private byte[] bt; //字节数组

    三、数据源配置

    db.properties文件

    test.driver=com.mysql.jdbc.Driver

    test.url=jdbc:mysql://127.0.0.1:3306/dg?CharacterEncoding=GBK

    test.user=root

    test.password=root

    四、数据库连接的工具类

    package com.test.util;

    import java.io.InputStream;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.util.Properties;

    /**

    *

    *@类功能说明:获取数据库连接和释放数据库连接的工具类

    *@修改人员名: yang

    *@修改日期:    2015-11-28 下午03:48:11

    *@修改内容:

    *@修改次数:

    *@创建时间:    2015-11-28 下午03:48:11

    *@版本:V1.0

    */

    public class JdbcUtil {

    private static Properties prop=new Properties();

    private  final static ThreadLocal tdl=new ThreadLocal();

    //静态代码块,保证得到的连接是唯一的

    static{

    try {

    InputStream is=JdbcUtil.class.getResourceAsStream("/db/db.properties");

    prop.load(is);

    Class.forName(prop.getProperty("test.driver"));

    } catch (Exception e) {

    throw new RuntimeException(e);

    }

    }

    //获取连接

    public Connection getConn() throws Exception{

    Connection conn=null;

    try {

    //获得当前数据库连接线程

    conn=tdl.get();

    conn=DriverManager.getConnection(prop.getProperty("test.url"),

    prop.getProperty("test.user"), prop.getProperty("test.password"));

    tdl.set(conn);

    } catch (SQLException e) {

    throw new RuntimeException(e);

    }

    return conn;

    }

    //释放连接

    public void releaseConn(Connection conn,PreparedStatement pstm,ResultSet rs)throws Exception{

    try{

    if(conn!=null){

    tdl.remove();

    conn.close();

    }

    if(pstm!=null){

    pstm.close();

    }

    if(rs!=null){

    rs.close();

    }

    }catch(Exception e){

    throw new RuntimeException(e);

    }

    }

    }

    五、开始实现保存图片和显示图片

    DAO的代码如下:

    package com.test.dao;

    import java.io.BufferedInputStream;

    import java.sql.Blob;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import com.test.util.JdbcUtil;

    /**

    *

    *@类功能说明:保存图片到数据库的实现类

    *@修改人员名: yang

    *@修改日期:    2015-11-28 下午04:28:07

    *@修改内容:

    *@修改次数:

    *@创建时间:    2015-11-28 下午04:28:07

    *@版本:V1.0

    */

    public class ISaveImageToDataDAOImpl {

    //添加图片

    public void insertImageInfo(String name,byte[] img)throws Exception{

    Connection conn=null;

    PreparedStatement pstm=null;

    JdbcUtil jdbc=null;

    StringBuffer sb=null;

    try{

    sb=new StringBuffer();

    jdbc=new JdbcUtil();

    conn=jdbc.getConn();

    StringBuffer sql=sb.append("insert into t_save_img values(?,?) ");

    pstm=conn.prepareStatement(sql.toString());

    pstm.setString(1, name);

    pstm.setBytes(2, img); //以字节数组的形式写入

    pstm.executeUpdate();

    }catch(Exception e){

    throw new RuntimeException(e);

    }finally{

    jdbc.releaseConn(null, pstm, null);

    }

    }

    //获取图片

    public BufferedInputStream selectOneImage(String name)throws Exception{

    BufferedInputStream bufferImage=null;

    Connection conn=null;

    PreparedStatement pstm=null;

    ResultSet rs=null;

    JdbcUtil jdbc=null;

    StringBuffer sb=null;

    try{

    sb=new StringBuffer();

    jdbc=new JdbcUtil();

    conn=jdbc.getConn();

    StringBuffer sql=sb.append("select name,img from t_save_img where name=?  ");

    pstm=conn.prepareStatement(sql.toString());

    pstm.setString(1, name);

    rs=pstm.executeQuery();

    while(rs.next()){

    //必须强制类型转换

    Blob blob=(Blob)rs.getBlob("img");

    bufferImage=new BufferedInputStream(blob.getBinaryStream());

    }

    }catch(Exception e){

    throw new RuntimeException(e);

    }finally{

    jdbc.releaseConn(null, pstm, null);

    }

    return bufferImage;

    }

    }

    service代码

    package com.test.service;

    import java.io.BufferedInputStream;

    import java.io.File;

    import java.io.FileInputStream;

    import java.nio.ByteBuffer;

    import java.sql.Connection;

    import java.sql.SQLException;

    import com.test.dao.ISaveImageToDataDAOImpl;

    import com.test.util.JdbcUtil;

    public class ISaveImageServiceImpl {

    private ISaveImageToDataDAOImpl saveImageDAO=new ISaveImageToDataDAOImpl();

    public void saveImage(String name,String imgPath) throws Exception{

    Connection conn=null;

    JdbcUtil jdbc=null;

    byte []img=null;

    try{

    jdbc=new JdbcUtil();

    conn=jdbc.getConn();

    conn.setAutoCommit(false);

    File file=new File(imgPath);

    //读入内存

    FileInputStream  fis=new FileInputStream(file);

    //建立缓冲区

    ByteBuffer  bbf=ByteBuffer.allocate((int)file.length());

    byte[]array=new byte[1024];

    int length=0;

    //开始读取和存放数据

    while((length=fis.read(array))>0){

    if(length!=1024){

    bbf.put(array,0,length);

    }else{

    bbf.put(array);

    }

    }

    //关闭输入流

    fis.close();

    //获取需要写的内容

    img=bbf.array();

    saveImageDAO.insertImageInfo(name, img);

    conn.commit();

    }catch(Exception e){

    try {

    conn.rollback();

    } catch (SQLException e1) {

    throw new RuntimeException(e1);

    }

    throw new RuntimeException(e);

    }finally{

    jdbc.releaseConn(conn, null, null);

    }

    }

    public BufferedInputStream getImage(String imgName)throws Exception{

    Connection conn=null;

    JdbcUtil jdbc=null;

    BufferedInputStream bg=null;

    try{

    jdbc=new JdbcUtil();

    conn=jdbc.getConn();

    conn.setAutoCommit(false);

    //获取缓冲流

    bg=saveImageDAO.selectOneImage(imgName);

    conn.commit();

    }catch(Exception e){

    try {

    conn.rollback();

    } catch (SQLException e1) {

    throw new RuntimeException(e1);

    }

    throw new RuntimeException(e);

    }finally{

    jdbc.releaseConn(conn, null, null);

    }

    return bg;

    }

    }

    action获取图片的代码

    package com.test.action.img;

    import java.awt.image.BufferedImage;

    import java.io.BufferedInputStream;

    import java.io.IOException;

    import javax.imageio.ImageIO;

    import javax.servlet.ServletException;

    import javax.servlet.ServletOutputStream;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import com.sun.image.codec.jpeg.JPEGCodec;

    import com.sun.image.codec.jpeg.JPEGImageEncoder;

    import com.test.service.ISaveImageServiceImpl;

    /**

    *

    *@类功能说明:获取数据库图片,并且显示

    *@修改人员名: yang

    *@修改日期:    2015-11-29 上午10:29:26

    *@修改内容:

    *@修改次数:

    *@创建时间:    2015-11-29 上午10:29:26

    *@版本:V1.0

    */

    @SuppressWarnings("serial")

    public class ShowImgAction extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response)

    throws IOException, ServletException {

    ISaveImageServiceImpl iis=new ISaveImageServiceImpl();

    BufferedInputStream bis=null;

    BufferedImage image = null;

    try{

    //获取service中返回的缓冲流

    bis=iis.getImage("da");

    image=ImageIO.read(bis);

    //写给客户端,只能是静态图片jpg,png格式,不可为gif格式

    ServletOutputStream sos = response.getOutputStream();

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);

    encoder.encode(image);

    bis.close();

    }catch(Exception e){

    e.printStackTrace();

    }

    }

    }

    web.xml文件配置

    index.jsp

    ShowImgAction

    com.test.action.img.ShowImgAction

    ShowImgAction

    /showImg

    jsp显示图片

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    %>

    显示数据库的图片

    图片:  

    展开全文
  • 本文使用mysql数据库举例插入图片到数据库和从数据库取出图片在页面显示: 一、建表 创建一个测试保存图片的表 create table t_save_img( name varchar(200), 文件名称 img longblob , primary key(name) ) 二、...
  • 由于文章中有很多图片,所以文章内容字段里面有很多的 标签。...意图:取出所有的文章表内容字段里面的图片 URL,保存单独一张表中。思路:执行Mysql分页查询,每次取出100条数据,分析其中的...
  • 根据sql,得知某个定时任务正插入数据,找到代码 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWumptf7-1596459434981)(http://47.94.3.87:28083/upload/20200802_12562060.png)] 每日...
  • MySQL中存储图片 ---java项目中

    千次阅读 2012-05-18 09:34:50
    MySQL中存储图片   ...但有些时候,向MySQL插入图片更加容易管理。那么在MySQL中该怎么存储呢? 参考资料[1]中有个相当清晰的例子,不过是基于MySQL图形界面的查询工具Query Brower的,你的
  • Java实现对Mysql图片存取操作: Mysql中可以存储大文件数据,一般使用的BLOB对象。如图片,视频等等。  BLOB是一个二进制大对象,可以容纳可变数量的数据。因为是二进制对象,所以与编码方式无关。有4种BLOB...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • 需要将.txt内容读取,并排列成为mysql数据库一样的顺序(数据库里面是没有name这个标签的),然后再插入另一个.txt文本里面,像这样,左边是没有插入前,右边是插入后的结果![图片说明]...
  • Java图片上传

    2019-06-18 09:04:00
    向数据库保存图片时,我们通常都是将图片转换为字节流插入到表格对应的列中。保存图片的列的类型与使用的数据库有关,在这里我是用的是MySQL数据库,列类型使用的是LONGBLOB类型,LONGBLOB是一个二进制大对象,可以...
  • JavaMySQL之间Blob数据转换

    千次阅读 2015-01-23 16:40:10
    今天做一个图片Base64的数据插入到MySql中,其中数据字段为Blob类型,再网上找了好多方法才找到一个比较好点的转换,代码如下: 注意如下:在MySql数据库下,Blob是有大小限制,享用大数据建议用LongBlob Clob c ...
  • 在设计数据库的开发中,难免要将图片或文档文件(如word)插入到数据库中的情况。一般来说,我们可以通过插入文件相应的存储路径,而不是文件本身,来避免直接向数据库里插入的麻烦。但有些时候,直接向MySQL中...
  • 但有些时候,向MySQL插入图片更加容易管理。那么在MySQL中该怎么存储呢? 参考资料[1]中有个相当清晰的例子,不过是基于MySQL图形界面的查询工具Query Brower的,你的机子上没有安装的话,可能得不很好的理解。...
  • 在设计数据库的开发中,难免要将图片或文档文件(如word)插入到数据库中的情况。一般来说,我们可以通过插入文件相应的存储路径,而不是文件本身,来避免直接向数据库里插入的麻烦。但有些时候,直接向MySQL中...
  • Mysql插入file,天才想法还是? 找了好久,网上大部分的例子都是,用Java,把图片转成二进制流,然后放数据库中的。 SQL 语句把文件转换成二进制流,好像没有这样的解决方案。 大部分的方案都是...
  • 本意是将网页上表格数据插入到mysql的表中 数据获取和类的构造 L_datainsert.java package a; import java.io.IOException; import java.util.Date; import javax.servlet.ServletConfig; import javax....
  • 【0】README 0.1)本文翻译自 ...段1)演示 从数据库表中插入和查询出图片。大多数情况下,图片数据都存储在数据库外部的一些文件夹下,而将其路径存储数据库。但是在一些场景下,我们需要将图片
  • 现在我从数据库获取这些时间后又需要重新update进去时却报错了 Field error in object 'dvciCheckInfoModel' on field 'applyTime': rejected value [2016-05-04 17:16:07.0]; codes [typeMismatch....
  • 那么在讲解循环之前呢我们先来了解一下什么是循环 生活中的例子 车子的轮胎他就是一直在循环 马拉松跑也是在循环 因为运动员不停的...”打印出来,效果如图所示在这里插入图片描述可以看到张浩打印了100遍System.o...
  • 3、代码分享功能(核心功能),该功能的主要特色是集成了优秀的文本编辑器,支持插入代码、插入链接、插入表情、插入图片、支持在线预览。同时也实现了文件上传(基于struts2的文件上传功能)。 4、代码下载,下载...
  • 我曾经将我的模拟器连接数据库MySQL . 但它不起作用 . 总是显示用户甚至没有找到我插入它 . 这是我的模拟器的图片:build.gradle:apply plugin:'...
  • 首先,下载mysql-connector-java-x.x.xx.jar 可以官网下载:http://dev.mysql.com/downloads/connector/ 在这里插入图片描述
  • java jsoup 网络爬虫 jsoup解析html

    万次阅读 2019-09-20 15:59:30
    java jsoup 网络爬虫 java jsoup 网络爬虫 学习例子(一)... java jsoup 网络爬虫 学习例子(三)抓取豆瓣电影海报图片 下载本地 java jsoup 网络爬虫 学习例子(四)抓取网页连接插入mysql数据库 java ...
  • 通过Spring+Mybatis+Mysql搭建了一个框架,在向MYSQl插入图片信息时,将其保存为BLOB类型数据库。前台JAVA代码如下:@RequestMapping("/zdfz")public ModelAndView zdfz(HttpServletRequest request,...
  • Oracle10g BLOB数据插入问题浅议

    千次阅读 2008-03-14 10:32:00
    在Oracle中大数据类型一般常用oracle.sql.BLOB来表示,不同于mysql中的通用的java.sql.Blob接口,因此在插入图片数据oracle的时候不能直接插入图片,一般采用oracle的empty_blob()函数,先生成空的BLOB对象插入...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

java插入图片到mysql

java 订阅
mysql 订阅