2016-08-23 7 views
-1

これは、 AndroidからMySQLへの接続を行う好ましい方法ではありませんが、私はそれが実行可能であることを知っています。AndroidスタジオアプリケーションがJDBCを使用してMySQLに接続する際の問題点を教えてください。

私はこの問題をDaysに取り組んで、新しい方法を研究し、適用してきました。私は接続することができなかった以外は接続に近づ​​いてしまった。エラーが消えてまだ説明できないエラーが発生するまで、私はさまざまなバージョンのJDBCコネクタを使用しました。私はこれを見て、それをあきらめるのではなく働かせたいと思っています。私はいくつかの提案を私の代わりに同じ場所でループするかもしれないと思った。

以下のファイルからわかるように、この単純なプログラムは、ボタンがクリックされたときにMySqlテーブルに情報を追加するだけです。接続が確立されている場合は、printlnステートメントを追加して接続が確立されたが、その行は印刷されないことを伝えます。 :

UPDATE:が手に入れたこのMySQLの例外:

com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Server connection failure during transaction. Due to underlying exception: 'java.net.SocketException: android.os.NetworkOnMainThreadException'. 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    android:paddingBottom="@dimen/activity_vertical_margin" 
 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
 
    android:paddingRight="@dimen/activity_horizontal_margin" 
 
    android:paddingTop="@dimen/activity_vertical_margin" 
 
    tools:context="com.example.aero.myapplication.MainActivity"> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Hello World!" /> 
 

 
    <Button 
 
     style="?android:attr/buttonStyleSmall" 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="New Button" 
 
     android:id="@+id/b" 
 
     android:layout_centerVertical="true" 
 
     android:layout_centerHorizontal="true" /> 
 
</RelativeLayout>

MainActivity.java:

package com.example.aero.myapplication; 
 

 

 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.util.Log; 
 
import android.view.View; 
 
import android.widget.Button; 
 
import android.widget.EditText; 
 
import android.widget.TextView; 
 
import android.view.View; 
 
import com.mysql.jdbc.Connection; 
 
import java.sql.DriverManager; 
 
import java.sql.ResultSet; 
 
import java.sql.SQLException; 
 
import java.sql.Statement; 
 

 

 
public class MainActivity extends AppCompatActivity { 
 

 

 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 

 

 

 

 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 
     Button auth = (Button)findViewById(R.id.b); 
 
     auth.setOnClickListener(
 
       new Button.OnClickListener(){ 
 
        public void onClick(View v){ 
 

 
          String username="root"; 
 
         String pass ="pass"; 
 
         String conn_str="jdbc:mysql://192.168.0.10:3306/JAVA?autoReconnect=true&useSSL=false"; 
 

 
         Connection conn=null; 
 

 
         try{ 
 
          Class.forName("com.mysql.jdbc.Driver"); 
 
          conn =(Connection) DriverManager.getConnection(conn_str,username,pass); 
 

 
          System.out.println("ESTABLISHED CONNEC"); 
 
          Statement s = conn.createStatement(); 
 

 
          String fname = "romeo"; 
 
          String Lname="alpha"; 
 
          String id ="meincode2"; 
 

 

 
          String u = "USE JAVA;"; 
 
          s.executeUpdate(u); 
 
          String insert = "INSERT INTO JAVA.users(Firstname,Lastname,ID) VALUES ('"+fname+"','"+Lname+"','"+id+"')"; 
 
          s.executeUpdate(insert); 
 
          System.out.println("DONE !!!"); 
 
         }catch (SQLException e){ 
 

 
         } catch (ClassNotFoundException e) { 
 
          e.printStackTrace(); 
 
         } 
 

 
        } 
 
       } 
 
     ); 
 

 

 

 

 

 
    } 
 
}

アプリケーション:

apply plugin: 'com.android.application' 
 

 
android { 
 
    compileSdkVersion 24 
 
    buildToolsVersion "24.0.1" 
 

 
    defaultConfig { 
 
     applicationId "com.example.aero.myapplication" 
 
     minSdkVersion 15 
 
     targetSdkVersion 24 
 
     versionCode 1 
 
     versionName "1.0" 
 
    } 
 
    buildTypes { 
 
     release { 
 
      minifyEnabled false 
 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
 
     } 
 
    } 
 
} 
 

 
dependencies { 
 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
 
    testCompile 'junit:junit:4.12' 
 
    compile 'com.android.support:appcompat-v7:24.1.1' 
 
    //compile files('libs/mysql-connector-java-2.0.14-bin.jar') 
 
    //compile files('libs/mysql-connector-java-5.1.38-bin.jar') 
 
    compile files('libs/mysql-connector-java-5.0.8-bin.jar') 
 
}

のAndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 
    package="com.example.aero.myapplication"> 
 

 
    <application 
 
     android:allowBackup="true" 
 
     android:icon="@mipmap/ic_launcher" 
 
     android:label="@string/app_name" 
 
     android:supportsRtl="true" 
 
     android:theme="@style/AppTheme"> 
 
     <activity android:name=".MainActivity"> 
 
      <intent-filter> 
 
       <action android:name="android.intent.action.MAIN" /> 
 

 
       <category android:name="android.intent.category.LAUNCHER" /> 
 
      </intent-filter> 
 
     </activity> 
 
    </application> 
 

 
    <uses-permission android:name="android.permission.INTERNET" /> 
 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
 
</manifest>

+0

が例外で更新 'キャッチ(のSQLException E){ }' –

+0

@Scaryウォンバット、スローされた例外をプリントアウトしてみてください – aero

答えて

関連する問題