沒有什麼在存儲歌曲不是存儲的圖像不同。你可以添加爲文件名的另一列,你可以做同樣的事情來存儲文件:然後
//..
PreparedStatement ps = con.prepareStatement("INSERT INTO data_table VALUES(?, ?, ?)");
//...
ps.setInt(1,id);
ps.setString(2, file.getName());
ps.setBinaryStream(3, fs,fs.available());
int i = ps.executeUpdate();
//...
的檢索它:
PreparedStatement ps = con.prepareStatement("SELECT file_name, content from data_table where *some condition*");
ResultSet rs = ps.executeQuery();
while(rs.hasNext) {
rs.next();
String fileName = rs.getString("file_name");
Blob blob = rs.getBlob("content");
byte[] content = blob.getBytes(1, (int) blob.length());
//now content contains the data, you ca store it in a file if you need
OutputStream os = new FileOutputStream(new File("d:/test/" + fileName));
os.write(content);
os.close();
}
不要忘記異常處理!
編輯:另一個版本使用字節數組: 寫:
//..
PreparedStatement ps = con.prepareStatement("INSERT INTO data_table VALUES(?, ?, ?)");
//...
byte[] content = new byte[fs.available()];
ps.setInt(1,id);
ps.setString(2, file.getName());
ps.setBytes(3, content);
int i = ps.executeUpdate();
//...
閱讀:
PreparedStatement ps = con.prepareStatement("SELECT file_name, content from data_table where *some condition*");
ResultSet rs = ps.executeQuery();
while(rs.hasNext) {
rs.next();
String fileName = rs.getString("file_name");
byte[] content = rs.getBytes("content");
//now content contains the data, you ca store it in a file if you need
OutputStream os = new FileOutputStream(new File("d:/test/" + fileName));
os.write(content);
os.close();
}
我認爲MySQL的是爲存儲照片和配方擺在首位,而不是歌曲。開玩笑。你是否遇到異常? – mbelow
@mbelow以上代碼?不! –
執行查詢後的狀態是什麼?是否創造了新紀錄? Blob字段是否爲空?請提供更多信息。 – mbelow