MySQlからの挿入と読み取りにBLObサポートを使用しています。(JDBC)それは可能ですが、読み取ると数kbしかありません。理由はわかりません。動作するコードは次のとおりです。
import java.sql.*;
import java.io.*;
public class InsertAndRetrieveImage {
public static void main(String[] args) throws SQLException, FileNotFoundException, IOException {
int id=7;
String connectionURL = "jdbc:mysql://127.0.0.1:3306/newdb";;
Connection con=null;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(connectionURL, "root", "sesame");
PreparedStatement ps = null;
ps=con.prepareStatement("INSERT IGNORE INTO image VALUES(?,?,?)");
File file = new File("e:/anarkali.wav");
FileInputStream fs = new FileInputStream(file);
try{
System.out.println(fs.available());
ps.setInt(1,id);
ps.setBinaryStream(2,fs,fs.available());
String filen=file.getName();
ps.setString(3,filen);
int i = ps.executeUpdate();
String filename="filename";OutputStream os=null;byte[] content=null;
ps= con.prepareStatement("SELECT fs from image where id=7");
ResultSet rs = ps.executeQuery();
System.out.println(rs);
while(rs.next()) {
Blob blob = rs.getBlob("fs");
content = blob.getBytes(1, (int) blob.length());
os = new FileOutputStream(new File("e://testanar.wav"));
}
os.write(content);
os.close();
con.close();
ps.close();}
catch(SQLException e)
{System.out.println(e.getMessage());
}
}catch(Exception ex){}
}
読み取りまたは書き込み中に問題が発生しますか?BLObのサイズが多少65535
異なります。これはバグですか?