怎样将图片上传到数据库?

来源:6-1 综合练习---问题描述.

Helios_

2016-04-25 22:27

mysql数据库可以上传保存文件的吗?、

写回答 关注

4回答

  • 慕斯0471166
    2016-05-01 01:55:01
    已采纳
    public class Ckb_test {  
      
        public static void main(String[] args) throws SQLException, IOException {  
            // TODO Auto-generated method stub  
            read();  
        }  
        static void create() throws SQLException, IOException  
        {  
            Connection conn=null;  
            PreparedStatement prest=null;  
            ResultSet resultset=null;  
              
            try {  
                //2.建立连接  
                conn=JdbcUtils.getConnection();  
                //单例设计模式  
                conn=JdbcUtilsSingle.getInstance().getConnection();  
                //3.创建语句  
                String sql="insert into ckb_test(text) values(?)";  
                prest=conn.prepareStatement(sql);  
                File file=new File("src/cn/com/JDBC/JdbcUtils.java");  
                Reader reader=new BufferedReader(new FileReader(file));  
                prest.setCharacterStream(1, reader, (int)file.length());  
                //4.执行语句  
                  
                int i=prest.executeUpdate();  
                reader.close();  
                System.out.println("i="+i);  
            } finally  
            {  
                JdbcUtils.free(resultset, prest, conn);  
            }  
        }  
        static void read() throws SQLException, IOException  
        {  
            Connection conn=null;  
            Statement st=null;  
            ResultSet resultset=null;  
              
            try {  
                //2.建立连接  
                conn=JdbcUtils.getConnection();  
                //单例设计模式  
                conn=JdbcUtilsSingle.getInstance().getConnection();  
                //3.创建语句  
                st=conn.createStatement();  
                //4.执行语句  
                resultset=st.executeQuery("select text from ckb_test");  
                //5.处理结果  
                while(resultset.next())  
                {  
                    Clob clob=resultset.getClob(1);  
                    Reader reader=clob.getCharacterStream();  
                    //reader=resultset.getCharacterStream(1);  
                    File file=new File("JdbcUtils.java");  
                    Writer writer=new BufferedWriter(new FileWriter(file));  
                    char[] buff=new char[1024];  
                    for(int i=0;(i=reader.read(buff))>0;)  
                    {  
                        writer.write(buff,0,i);  
                    }  
                    writer.close();  
                    reader.close();  
                }  
                  
            } finally  
            {  
                JdbcUtils.free(resultset, st, conn);  
            }  
        }  
      
    }  
      
    ----------------------------------------------------------------------------------------------------------  
    
    public class PictureBlob {  
      
        public static void main(String[] args) throws SQLException, IOException {  
            read();  
        }  
        static void create() throws SQLException, IOException  
        {  
            Connection conn=null;  
            PreparedStatement prest=null;  
            ResultSet resultset=null;  
              
            try {  
                //2.建立连接  
                conn=JdbcUtils.getConnection();  
                //单例设计模式  
                conn=JdbcUtilsSingle.getInstance().getConnection();  
                //3.创建语句  
                String sql="insert into blob_test(big_bit) values(?)";  
                prest=conn.prepareStatement(sql);  
                File file=new File("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\cxg.jpg");  
                InputStream in=new BufferedInputStream(new FileInputStream(file));  
                prest.setBinaryStream(1, in, (int)file.length());  
                //4.执行语句  
                  
                int i=prest.executeUpdate();  
                in.close();  
                System.out.println("i="+i);  
            } finally  
            {  
                JdbcUtils.free(resultset, prest, conn);  
            }  
              
        }  
          
        static void read() throws SQLException, IOException  
        {  
            Connection conn=null;  
            Statement st=null;  
            ResultSet resultset=null;  
              
            try {  
                //2.建立连接  
                conn=JdbcUtils.getConnection();  
                //单例设计模式  
                conn=JdbcUtilsSingle.getInstance().getConnection();  
                //3.创建语句  
                st=conn.createStatement();  
                //4.执行语句  
                resultset=st.executeQuery("select big_bit from blob_test");  
                //5.处理结果  
                while(resultset.next())  
                {  
                    Blob blob=resultset.getBlob(1);  
                    InputStream in=blob.getBinaryStream();  
                    //reader=resultset.getCharacterStream(1);  
                    File file=new File("1.jpeg");  
                    OutputStream out=new BufferedOutputStream(new FileOutputStream(file));  
                    byte[] buff=new byte[1024];  
                    for(int i=0;(i=in.read(buff))>0;)  
                    {  
                        out.write(buff,0,i);  
                    }  
                    out.close();  
                    in.close();  
                }  
                  
            } finally  
            {  
                JdbcUtils.free(resultset, st, conn);  
            }  
        }  
    }


    Helios...

    我之前写了代码发现上传之后下载下来文件就损坏了。。能帮忙看看吗?

    2016-05-01 10:19:05

    共 2 条回复 >

  • Helios_
    2016-05-01 10:19:46

    public void upload(String userid, InputStream is) throws SQLException{

    Connection conn=Init.getConnection();

    String sql="" +

    " insert file(userid,file) " +

    " values(?,?) " ;

    PreparedStatement ptmt=conn.prepareStatement(sql);

    ptmt.setString(1, userid);

    ptmt.setBinaryStream(2, is);

    ptmt.execute();

    }

    public InputStream download(String userid) throws SQLException{

    Connection conn=Init.getConnection();

    String sql="" +

    " select * from file " +

    " where userid like ? ";

    PreparedStatement ptmt=conn.prepareStatement(sql);

    ptmt.setString(1, "%"+userid+"%");

    ResultSet rs=ptmt.executeQuery();

    rs.next();

    return rs.getBinaryStream("file");

    }


  • 慕斯0471166
    2016-05-01 01:46:45

    首先,文件是可以保存到数据库中的,但是不建议这么做(Why请百度)。实际的做法是把文件的路径保存到数据库中,然后读取文件的话先是从数据库中读到路径,再根据路径得到文件,希望能帮到

  • 灿烂满天星
    2016-04-26 23:19:21

    可以自己在数据库中建一个文件夹,然后将图片资源上传到该文件夹中

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题