2009-05-13 40 views

Trả lời

5

tôi đã kết thúc cách làm như sau:

PreparedStatement st = conn.prepareStatement("update MyTable set binaryData = ? where id= 9"); 
st.setBinaryStream(1, new FileInputStream(file), (int)file.length()); 
st.execute(); 
+1

Cảnh báo: nếu tệp của bạn dài hơn Integer.MAX_VALUE byte, thì độ dài của nó() thành int sẽ cung cấp cho bạn số âm, điều này có thể khiến setBinaryStream không hoạt động chính xác. Tôi không biết tại sao setBinaryStream không được khai báo để có độ dài "dài". –

0

đèo trong một mảng byte vào một lĩnh vực BLOB.

+0

Trong khi liên kết này có thể trả lời câu hỏi, nó là tốt hơn để bao gồm các bộ phận thiết yếu của trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. –

+0

@TanmayPatil Đây không phải là câu trả lời chỉ liên kết. Nó giải thích ngắn gọn những gì bạn nên làm. Bước 1: lấy một mảng byte. Bước 2: đặt nó vào một trường BLOB. Tôi đang thiếu gì? Các tài nguyên khác có thể cung cấp chi tiết nếu bạn thực sự cần nhiều nắm tay. –

2

Sử dụng java.util.Connection và đúng SQL bạn có thể tạo một java.sql.PreparedStatement thích hợp (Tôi không sử dụng SQL Server, vì vậy bạn nên tự mình viết SQL).

Bạn có thể tạo một java.sql.Blob bằng cách sử dụng dữ liệu byte được đọc từ tệp xls của bạn.

Gọi .setBlob (Blob) trên PreparedStatement của bạn và sau đó thực hiện.

Tôi không viết mã cho bạn, nhưng đó phải là những điều cơ bản.

-2

Trong các phiên bản cũ của Java bạn có thể thử

obj.setObject("@somefield", some_data); 
+0

Tôi đã đăng bài này để giúp một người có thể bị buộc phải sử dụng Java rất cũ, tôi không ủng hộ điều này như một giải pháp hiện đại. –

Các vấn đề liên quan