竹里馆→忆童年

独坐幽篁里,弹琴复长啸;深林人不知,明月来相照
posts - 9, comments - 23, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

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

Posted on 2007-07-26 13:55 忆童年 阅读(1911) 评论(1)  编辑  收藏 所属分类: Java Web
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(
11);
                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);}
      }

}


评论

# re: JDBC操作Image类型数据(添加和查询)  回复  更多评论   

2007-07-28 19:03 by
哥哥,加油,努力,我相信你!我也要努力了!恩

只有注册用户登录后才能发表评论。


网站导航: