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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

Q&A

解決済

2回答

3708閲覧

Android Studioでjdbcを用いてデータベース接続をしたい

shikco_taro

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

0グッド

0クリップ

投稿2020/01/27 15:21

androidstudioでjdbcを用いてデータベース接続をしたい

androidstudio(java)でmysqlのデータベースと接続してデータを取得,更新したのですがエラーが出てしまいました.

発生している問題・エラーメッセージ

W/System.err: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.ConnectException W/System.err: MESSAGE: failed to connect to /xxx.xxx.xxx.xxx(port 3306) from /:: (port 43375): connect failed: ETIMEDOUT (Connection timed out) STACKTRACE: java.net.ConnectException: failed to connect to /157.112.147.201 (port 3306) from /:: (port 43375): connect failed: ETIMEDOUT (Connection timed out) at libcore.io.IoBridge.connect(IoBridge.java:138) at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:356) W/System.err: at java.net.Socket.<init>(Socket.java:445) at java.net.Socket.<init>(Socket.java:248) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771) at com.mysql.jdbc.Connection.<init>(Connection.java:1555) W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.lang.Thread.run(Thread.java:764) Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out) at libcore.io.Linux.connect(Native Method) at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:126) W/System.err: ** END NESTED EXCEPTION ** I/chatty: uid=10202(u0_a202) AsyncTask #4 identical 1 line W/System.err: Last packet sent to the server was 7 ms ago. at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847) W/System.err: at com.mysql.jdbc.Connection.<init>(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:569) W/System.err: at com.example.nfc_checker.MainActivity$DbReload.doInBackground(MainActivity.java:199) at com.example.nfc_checker.MainActivity$DbReload.doInBackground(MainActivity.java:166) at android.os.AsyncTask$2.call(AsyncTask.java:333) W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) W/System.err: at java.lang.Thread.run(Thread.java:764)

該当のソースコード

java

1import... 2public class MainActivity extends AppCompatActivity { 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 8 String[] labels = getResources().getStringArray(R.array.spinner_items); 9 ArrayAdapter<String> adapter 10 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels); 11 spinner1.setAdapter(adapter); 12 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 13 Intent intent = getIntent(); 14 String action = intent.getAction(); 15 if (action.equals((NfcAdapter.ACTION_NDEF_DISCOVERED))) { 16 String item_Id = getItemId(getIntent()); 17 if(item_Id != null) { 18 TextView textView4 = (TextView) findViewById(R.id.textView4); 19 textView4.setText(item_Id); 20 DbReload task1 = new DbReload(MainActivity.this); 21 task1.execute(); 22 } 23 } 24 } 25 public void onButton1(View view) { 26 try{ 27 Class.forName("android.os.AsyncTask"); 28 }catch(ClassNotFoundException e){} 29 DbGet task = new DbGet(MainActivity.this); 30 task.execute(); 31 } 32 private String getItemId(Intent intent) { 33 //Ndefメッセージの取得 34 Parcelable[] raws = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 35 NdefMessage[] msgs = new NdefMessage[raws.length]; 36 String str = ""; 37 for (int i = 0; i < raws.length; i++) { 38 msgs[i] = (NdefMessage) raws[i]; 39 for (NdefRecord record : msgs[i].getRecords()) { 40 //payloadを取得 41 byte[] payload = record.getPayload(); 42 //payloadが空白ならブレイク 43 if (payload == null) break; 44 int idx = 0; 45 for (byte data : payload) { 46 if (idx > 2) { 47 str += String.format("%c", data); 48 } 49 idx++; 50 } 51 } 52 } 53 return str; 54 } 55 56 public String roomGet() { 57 Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 58 String room = spinner1.getSelectedItem().toString(); 59 return room; 60 } 61 62 class DbGet extends AsyncTask<Void, Void, String>{ 63 Activity activity = null; 64 public DbGet(Activity act) { 65 activity = act; 66 } 67 String driverName = "com.mysql.jdbc.Driver"; 68 String jdbcUrl = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/nfccheck?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; 69 String userId = "nfccheck_admin"; 70 String userPass = "asdfasdf"; 71 Connection con = null; 72 Statement stmt = null; 73 ResultSet rs = null; 74 75 @Override 76 protected String doInBackground(Void... params) { 77 String text1 = ""; 78 String room_id = roomGet(); 79 System.out.println(room_id); 80 81 try { 82 try { 83 Class.forName(driverName); 84 } catch (ClassNotFoundException e) { 85 e.printStackTrace(); 86 //System.out.println("bbb"); 87 } 88 89 con = DriverManager.getConnection( jdbcUrl, userId , userPass); 90 stmt = con.createStatement(); 91 //String sql ="Select * from items WHERE item_room = '" +room_id +"';"; 92 String sql = "Select * from items WHERE item_room = 'T001';"; 93 rs = stmt.executeQuery(sql); 94 95 while (rs.next()) { 96 int id = rs.getInt(1); 97 String item_name = rs.getString(3); 98 String time = rs.getString(5); 99 text1 += id + " " + item_name + " " + time + " " + "\r\n"; 100 } 101 rs.close(); 102 stmt.close(); 103 con.close(); 104 105 } catch (SQLException e) { 106 text1 = e.getMessage(); 107 e.printStackTrace(); 108 } 109 return text1; 110 } 111 protected void onPostExecute(String result) { 112 TextView tv = (TextView) activity.findViewById(R.id.textView10); 113 tv.setText(result); 114 } 115 } 116 117 118 class DbReload extends AsyncTask<Void, Void, String>{ 119 Activity activity = null; 120 public DbReload(Activity act) { 121 activity = act; 122 } 123 String driverName = "com.mysql.jdbc.Driver"; 124 String jdbcUrl = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/nfccheck?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";//jdbcのurl 125 String userId = "nfccheck_admin"; 126 String userPass = "asdfasdf"; 127 Connection con = null; 128 Statement stmt = null; 129 ResultSet rs = null; 130 131 @Override 132 protected String doInBackground(Void... params) { 133 String text1 = ""; 134 String item_Id = getItemId(getIntent()); 135 System.out.println(item_Id); 136 137 //System.out.println("aaaa"); 138 139 try { 140 try { 141 Class.forName(driverName); 142 } catch (ClassNotFoundException e) { 143 e.printStackTrace(); 144 //System.out.println("bbb"); 145 } 146 con = DriverManager.getConnection( jdbcUrl, userId , userPass); 147 stmt = con.createStatement(); 148 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 149 String sql = "UPDATE items SET Up_date = "+dateFormat+"WHERE item_id = '"+item_Id+"';"; 150 stmt.executeQuery(sql); 151 sql = "Select item_name from items WHERE item_id = '"+item_Id+"';"; 152 rs = stmt.executeQuery(sql); 153 154 while (rs.next()) { 155 int id = rs.getInt(1); 156 String item_name = rs.getString(3); 157 String time = rs.getString(5); 158 text1 += id + " " + item_name + " " + time + " " + "\r\n"; 159 } 160 rs.close(); 161 stmt.close(); 162 con.close(); 163 164 } catch (SQLException e) { 165 text1 = e.getMessage(); 166 e.printStackTrace(); 167 } 168 return text1; 169 } 170 171 protected void onPostExecute(String result) { 172 TextView tv = (TextView) activity.findViewById(R.id.textView4); 173 tv.setText(result); 174 } 175 } 176} 177

補足情報(FW/ツールのバージョンなど)

mysql 5.0.95
mysql-connector-java-5.0.8-bin-jar
android studio3.5

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

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

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

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

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

guest

回答2

0

自己解決

レンタルサーバーが外部の端末と接続できないタイプだったみたいなので、Herokuでサーバーを立てて繋げたところ、接続が出来ました

投稿2020/01/29 13:02

shikco_taro

総合スコア8

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

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

0

切断までが非常に早いようですが、android.permission.INTERNETはマニフェストに記載されているのでしょうか?

投稿2020/01/28 14:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問