質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

1回答

1705閲覧

JDBCで画像保存を行っています

RYOHEI1009

総合スコア45

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/11/18 18:23

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.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Exceptionをキャッチして全ての例外を無視しています。
このような適当な例外処理はではデバッグできないと思うので、適切な例外処理に実装しなおしてから自身でデバッグをしましょう。

また、ImageView#toStringを保存しようとしていますが、どのような意味があるんですか?

投稿2017/11/19 13:28

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RYOHEI1009

2017/11/19 15:57

ご回答ありがとうございます! このImageViewは画像のIDのことをさしています やりたいこととしては ギャラリーから画像を選択し、ImageViewで表示し、 そのあとに、バイナリ化し、MYSQLに保存といったことをしたいと思っています!
yona

2017/11/20 11:05

そのやりたいことの通り、あなたは実装していますか? また、デバッグはしましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問