java image类型数据_Java JDBC操作Image类型数据 添加和查询 | 学步园

这篇博客展示了如何使用Java的JDBC进行SQLServer数据库的image字段操作,包括将图片数据插入数据库以及从数据库中查询并保存图片。示例代码详细解释了如何通过二进制流方式处理图像数据,涉及预编译SQL语句和文件输入/输出流的使用。
摘要由CSDN通过智能技术生成

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);}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值