JDBCで画像を保存を実現したいと思い今回のコードを記述しました!
もちろんHTTPで行う事が基本だとおもいますが今回はJDBCで行いたいとおもいます
セキュリティなどなにも考えず今回のコードを記述しております。
しかし、下記の記述では画像は保存されていませんでした。。
コードは自ら記述したところもあります。。
ご指摘お願いいたします。
java
1package com.example.ryo.testtest; 2import android.app.Activity; 3import android.content.Context; 4import android.content.Intent; 5import android.graphics.Bitmap; 6import android.net.Uri; 7import android.provider.MediaStore; 8import android.support.v7.app.AppCompatActivity; 9import android.os.Bundle; 10import android.view.View; 11import android.widget.Button; 12import android.widget.ImageView; 13import java.sql.Connection; 14import java.sql.ResultSet; 15import java.sql.Statement; 16import java.sql.DriverManager; 17import android.widget.TextView; 18import android.os.AsyncTask; 19import android.view.View.OnClickListener; 20import android.widget.Toast; 21 22import java.io.ByteArrayOutputStream; 23import java.io.IOException; 24 25public class MainActivity extends AppCompatActivity implements OnClickListener { 26 private static final int READ_REQUEST_CODE = 42; 27 ImageView imageView; 28 private Bitmap bmp; 29 30 @Override 31 protected void onCreate(Bundle savedInstanceState) { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.activity_main); 34 Button button2 = (Button) findViewById(R.id.button2); 35 Button button1 = (Button) this.findViewById(R.id.button1); 36 button1.setOnClickListener(this); 37 imageView = (ImageView) findViewById(R.id.imageView); 38 39 40 button2.setOnClickListener(new View.OnClickListener() { 41 //暗黙的Intentを使ってギャラリーアプリを選択し、画像のURIを取得 42 @Override 43 public void onClick(View v) { 44 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 45 intent.setType("image/*"); 46 47 startActivityForResult(intent, READ_REQUEST_CODE); 48 } 49 }); 50 51 52 } 53 54 55 @Override//コンパイラのエラーなどを教えてくれる 56 public void onActivityResult(int requestCode, int resultCode, 57 Intent resultData) { 58 59 if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 60 Uri uri = null; 61 if (resultData != null) { 62 uri = resultData.getData(); 63 try { 64 Bitmap bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 65 imageView.setImageBitmap(bmp); 66 67 } catch (IOException e) { 68 e.printStackTrace(); 69 } 70 } 71 } 72 } 73 74 //後で書く 75 @Override 76 public void onClick(View v) { 77 if (v.getId() == R.id.button1) { // ボタン1が押下されたら 78 TaskDbInsert task1 = new TaskDbInsert(MainActivity.this); 79 task1.execute(); 80 } 81 82 } 83 84 public static class CanvasView extends View { 85 86 public CanvasView(Context context) { 87 super(context); 88 } 89 90 public static byte[] getBitmapAsByteArray(Bitmap bitmap) { 91 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();//バイト配列出力ストリームを新しく作成します。 92 93 //PNG, クオリティー100としてbyte配列にデータを格納 94 bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 95 96 return byteArrayOutputStream.toByteArray();//メモリを割り当ててバイト配列を新しく作成します。 97 } 98 } 99 100 class TaskDbInsert extends AsyncTask<Void, Void, Void> { 101 Activity activity = null; 102 103 // コンストラクタ 104 public TaskDbInsert(MainActivity act) { 105 activity = act; 106 } 107 108 @Override 109 protected Void doInBackground(Void... voids) { 110 try { 111 Class.forName("com.mysql.jdbc.Driver"); 112 Connection conn = DriverManager.getConnection("jdbc:mysql://10.25.93.226/images", "root", "PASSWORD"); 113 Statement stmt = conn.createStatement(); 114 String sql = "insert into ports (imgdat) values ('" + imageView + "')"; 115 stmt.executeUpdate(sql); 116 stmt.close(); 117 conn.close(); 118 } catch (Exception e) { 119 120 } 121 return null; 122 } 123 } 124 125 126} 127 128 129 130 131 132 133 134
エラー内容
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/19 15:57
2017/11/20 11:05