jdbc操作SQL Server中的image字段,要使用二進制流的方法,下面我給出兩個簡單的實例,一個是添加數據、一個是查詢數據。
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);}
}
}
首先,在SQL Server中建立一個數據庫,命名為:mydata,在數據庫里新建一個表:test,表里有兩個字段:tid(int)、tdata(image),掛號內為數據類型。在D盤建立一幅圖像:123.jpg,之后我們將把123.jpg添加到數據庫,然后再查詢。
添加數據(TestInsert.java,SQL Server驅動2005,2000的可以修改相應驅動和URL):




































查詢并保存數據(TestQuery.java):









































