2017-09-11 10 views
0

AndroidスタジオからJTDS 1.30を使用してjpgファイルをMSSQLサーバーにアップロードしようとしています。私はこのコードを使用して(必要に応じて、またはBASE64)ブロブ形式に私のJPGを取得することができるよ:AndroidでMSSQLにBLOBをアップロードするには?

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)

SQL Serverは、私はトンが必要であることを言うように私はどちらかをbase64として直接列にアップロードすることができていることは表示されません。 o最初にvarbinary(max)に変換します。

+0

データベースに保存する必要がありますか、ファイルに保存してファイル名をDBに保存することはできますか? –

+0

私はどちらかをする選択肢があります。私はSQLサーバー上のテーブルを制御しています。私はクエリの一部としてファイル名を保存していますが、何らかの形でサーバーに実際のファイルを取得する必要があります。 – Jay

答えて

0

明らかに、私はblobを初期化するためにcreateblob()関数を使う必要はありませんでした。 PreparedStatementのsetBytesメソッドを使用するだけで、byte []オブジェクトを必要なBLOBオブジェクトに直接変換する必要がありました。

try { 
     String query = "insert into podfiles values ('09/28/2017','c:\\temp\\','" + inputFile + "', ?)"; 
     PreparedStatement ps = con.prepareStatement(query); 
     Timber.d(query); 
     ps.setBytes(1, blob); 
     ps.executeUpdate(); 
    } catch (Exception e) { 
     Timber.e("Blob Error: " + e.getMessage()); 
    } 
関連する問題