我試圖從Android Studio使用JTDS 1.30將jpg文件上傳到MSSQL服務器。我能得到我的JPG成BLOB格式(或者如果有必要的base64)使用此代碼:如何在Android中將blob上傳到MSSQL?
Bitmap bitmap = BitmapFactory.decodeFile("/storage/sdcard0/Shipright/Pod/test.jpg");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream);
byte[] blob = byteArrayOutputStream.toByteArray();
String encodedImage = Base64.encodeToString(blob, Base64.DEFAULT);
然而,真正將其上傳到數據庫的代碼一直給我一個錯誤:
try {
Blob blobUpload = con.createBlob();
blobUpload.setBytes(0, blob);
String query = "insert into pics values ('today', 'test.jpg', '11111', 'Jay Kallen', '111', '287', '13', ?)";
PreparedStatement ps = con.prepareStatement(query);
Timber.d(query);
ps.setBlob(1, blobUpload);
ps.executeUpdate();
} catch (Exception e) {
Timber.e("error: " + e.getMessage());
}
我得到的con.createBlob線的AbstractMethodError:
09-11 10:26:46.246 8462-8462/com.procatdt.sandfile E/AndroidRuntime: FATAL EXCEPTION: main Process: com.procatdt.sandfile, PID: 8462 java.lang.AbstractMethodError at net.sourceforge.jtds.jdbc.JtdsConnection.createBlob(JtdsConnection.java:2755) at com.procatdt.sandfile.CopyActivity.onCreate(CopyActivity.java:46)
它不會出現,我可以把它上傳到欄目中直接爲Base64或者,如SQL Server的說,我需要ŧ o首先將其轉換爲varbinary(max)。
它需要存儲在數據庫中,還是可以將其保存到文件並將文件名保存在數據庫中? –
我可以選擇做。我正在控制SQL服務器上的表。我將文件名保存爲查詢的一部分,但是我需要以某種方式將實際文件轉移到服務器。 – Jay