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

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。