2013-07-01 41 views
19

Tôi đang cố gắng để có được chuỗi từ BLOB datatype bằng cách sử dụngLàm thế nào để chuyển đổi Blob để String và String để Blob trong java

Blob blob = rs.getBlob(cloumnName[i]); 
byte[] bdata = blob.getBytes(1, (int) blob.length()); 
String s = new String(bdata); 

Nó đang làm việc tốt nhưng khi tôi sẽ chuyển đổi String-Blob và cố gắng chèn vào cơ sở dữ liệu, sau đó không có gì chèn vào cơ sở dữ liệu. Tôi đã sử dụng mã dưới đây để chuyển đổi String để Blob:

String value = (s); 
byte[] buff = value.getBytes(); 
Blob blob = new SerialBlob(buff); 

bất cứ ai có thể giúp tôi sắp sửa chuyển đổi của Blob-StringString-Blob trong Java?

+1

Trước tiên, bạn cần đảm bảo bạn sử dụng đúng cụm từ: đó là blob chứ không phải blog. Bạn sẽ nhận được nhiều hơn nữa với các tìm kiếm trên web khi bạn sử dụng đúng tên. Thứ hai, các đốm màu dành cho dữ liệu * nhị phân *, không phải dữ liệu * văn bản *. Lý tưởng nhất là bạn không nên sử dụng chúng cho dữ liệu văn bản ở nơi đầu tiên và nếu bạn làm bạn nên chỉ định một mã hóa (ví dụ: UTF-8) khi chuyển đổi dữ liệu văn bản thành dữ liệu nhị phân. –

Trả lời

0

Bạn đặt blob thành DB như thế nào? Bạn nên làm:

//imagine u have a a prepared statement like: 
PreparedStatement ps = conn.prepareStatement("INSERT INTO table VALUES (?)"); 
String blobString= "This is the string u want to convert to Blob"; 
oracle.sql.BLOB myBlob = oracle.sql.BLOB.createTemporary(conn, false,oracle.sql.BLOB.DURATION_SESSION); 
byte[] buff = blobString.getBytes(); 
myBlob.putBytes(1,buff); 
ps.setBlob(1, myBlob); 
ps.executeUpdate(); 
+2

Trước hết, OP không bao giờ quy định rằng ông đang sử dụng Oracle RDMS. Nếu không, mã này sẽ không biên dịch. –

1

Sử dụng tính năng này để chuyển đổi Chuỗi thành Blob. Trường hợp kết nối là kết nối với đối tượng db.

String strContent = s; 
    byte[] byteConent = strContent.getBytes(); 
    Blob blob = connection.createBlob();//Where connection is the connection to db object. 
    blob.setBytes(1, byteContent); 
6

thử này (a2 là BLOB col)

PreparedStatement ps1 = conn.prepareStatement("update t1 set a2=? where id=1"); 
Blob blob = conn.createBlob(); 
blob.setBytes(1, str.getBytes()); 
ps1.setBlob(1, blob); 
ps1.executeUpdate(); 

nó có thể làm việc ngay cả khi không BLOB, tài xế sẽ làm thay đổi kiểu tự động:

ps1.setBytes(1, str.getBytes); 
    ps1.setString(1, str); 

Bên cạnh đó nếu bạn làm việc với CLOB văn bản dường như là loại col tự nhiên hơn

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