如何使用Java代码在SQL Server 2008 R2中插入/检索图像?

时间:2012-03-24 12:44:43

标签: java sql-server sql-server-2008 sql-server-2008-r2

我处理需要从/向DB(SQL server 2008 R2)插入/检索的java程序。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

public void insertImage(Connection conn,String img)
        {
                int len;
                String query;
                PreparedStatement pstmt;

                try
                {
                        File file = new File(img);
                        FileInputStream fis = new FileInputStream(file);
                        len = (int)file.length();

                        query = ("insert into TableImage VALUES(?,?,?)");
                        pstmt = conn.prepareStatement(query);
                        pstmt.setString(1,file.getName());
                        pstmt.setInt(2, len);

                        // Method used to insert a stream of bytes
                        pstmt.setBinaryStream(3, fis, len); 
                        pstmt.executeUpdate();

                }
                catch (Exception e)
                {
                        e.printStackTrace();
                }
        }

        public void getImageData(Connection conn)
        {

                 byte[] fileBytes;
                 String query;
                 try
                 {
                         query = "select data from tableimage";
                         Statement state = conn.createStatement();
                         ResultSet rs = state.executeQuery(query);
                         if (rs.next())
                        {
                                  fileBytes = rs.getBytes(1);
                                  OutputStream targetFile=  
                                  new FileOutputStream(
                                       "d://filepath//new.JPG");

                                  targetFile.write(fileBytes);
                                  targetFile.close();
                        }        

                 }
                 catch (Exception e)
                 {
                         e.printStackTrace();
                 }
        }