现在的位置: 首页 > 综合 > 正文

Java JDBC操作Image类型数据 添加和查询

2014年02月23日 ⁄ 综合 ⁄ 共 2390字 ⁄ 字号 评论关闭

jdbc操作SQL Server中的image字段,要使用二进制流的方法,下面我给出两个简单的实例,一个是添加数据、一个是查询数据。 

           首先,在SQL Server中建立一个数据库,命名为:mydata,在数据库里新建一个表:test,表里有两个字段:tid(int)、tdata(image), 挂号内为数据类型。在D盘建立一幅图像:123.jpg,之后我们将把123.jpg添加到数据库,然后再查询。

添加数据(TestInsert.java,SQL Server驱动2005,2000的可以修改相应驱动和URL):

import java.sql.*;

public class TestInsert {

       public static void main(String[] args){

           String connectionUrl =      "jdbc:sqlserver://localhost:1433;DatabaseName=mydata;user=sa;password="; 

           Connection conn = null;


            try {

                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

                conn = DriverManager.getConnection(connectionUrl);

                java.io.File file = new java.io.File("d:\\123.jpg");

                java.io.FileInputStream fis = new java.io.FileInputStream(file);

                ResultSet result=null;

                String sql=null;

                PreparedStatement prestmt=null;

                sql="insert into test(tid,tdata) values(?,?)";

                prestmt =conn.prepareStatement(sql);

                prestmt.setInt(1, 1);

                prestmt.setBinaryStream(2,fis,(int)file.length());

                prestmt.executeUpdate();

                System.out.println("success!");

                conn.close();

           }

           catch(Exception e){System.out.println("error: " + e);}

       }

}

查询并保存数据(TestQuery.java):

import java.sql.*;

import java.io.*;

public class TestQuery {

    public static void main(String[] args){

           String connectionUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=commerce1;user=sa;password=";

           Connection conn = null;


           try {

               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

               conn = DriverManager.getConnection(connectionUrl);

               java.io.File file = new java.io.File("d:\\1230.jpg");          //不要覆盖原来的文件,以便比较

               java.io.FileOutputStream fos = new java.io.FileOutputStream(file);

              String sql="select tdata from test where tid=2";

              Statement stmt = conn.createStatement();

              ResultSet result = stmt.executeQuery(sql);

              result.next();

              InputStream fis = result.getBinaryStream(1);

              byte[] b = new byte[10*1024];

              while(fis.read(b,0,10240) != -1){

                  fos.write(b,0,10240);

              }

             fos.flush();

             System.out.println("success!");

             conn.close();

         }

        catch(Exception e){System.out.println("error: " + e);}

      }

}

抱歉!评论已关闭.