2016-09-22 7 views
0

4 시간 동안이 문제를 해결하기 위해 노력하고 있으며 완전히 희망이 없습니다.Android 스튜디오 JDBC MySQL

이 응용 프로그램을 코딩하기 위해 android studio를 사용하고 있습니다. 나는 사용자 이름과 암호에 대한 편집 필드를 보유하는 간단한 활동을 만들었으며 그 다음에이 두 편집 필드에서 데이터를 제출하기위한 버튼이 있습니다.

나는 MySQL의 커넥터/J를 이용하고 있고 자바 코드는 다음입니다 ". 데이터베이스에 연결 실패"

package allanko.quizzerappandroid; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.TextView; 

import java.sql.*; 

public class LoginActivity extends AppCompatActivity 
{ 
    private static CDatabase db; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     db = new CDatabase(); 
    } 

    /* 
    public static CDatabase getDB() 
    { 
     return db; 
    }*/ 

    public class CDatabase 
    { 
     private String db_name; 
     private String db_user; 
     private String db_pass; 
     private Connection connection; 
     private boolean isConnected; 

     public CDatabase() 
     { 
      db_name = "jdbc:mysql://localhost:3306/quizzer?useSSL=false"; 
      db_user = "quizzer"; 
      db_pass = "pass"; 
      connection = null; 

      if(connect() == true) 
       isConnected = true; 
      else 
       isConnected = false; 
      printResult(); 
     } 

     private boolean connect() 
     { 
      try 
      { 
       connection = DriverManager.getConnection(db_name, db_user, db_pass); 
       return true; 
      } 
      catch(Exception exc) 
      { 
       exc . printStackTrace(); 
       return false; 
      } 
     } 

     private void printResult() 
     { 
      TextView dbText = (TextView)findViewById(R.id.dbText); 

      if(! isConnected) 
      dbText . setText("Connection to database failed"); 
      else 
      dbText . setText("Connected to database."); 
     } 

     public ResultSet query(String query) throws SQLException 
     { 
      Statement statement = connection . createStatement(); 
      return statement . executeQuery(query); 
     } 

     public boolean isConnected() 
     { 
      return isConnected; 
     } 
    } 
} 

내가 에뮬레이터 또는 내 휴대 전화, 그것은 때마다 쓰기 여부에이 응용 프로그램을 시작할 때 나는 콘솔에서이 무엇입니까 : 나는 내 마음에 와서 아무 일없는 모든 것을 구글하려하기 때문에

W/art: Common causes for lock verification issues are non-optimized dex code 
W/art: and incorrect proguard optimizations. 
W/art: Class android.support.v4.util.LruCache failed lock verification and will run slower. 
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
W/System.err: java.sql.SQLException: java.lang.VerifyError: Verifier rejected class com.mysql.jdbc.CharsetMapping: void com.mysql.jdbc.CharsetMapping.<clinit>() failed to verify: void com.mysql.jdbc.CharsetMapping.<clinit>(): [0x4287] Invalid reg type for array index (Precise Reference: com.mysql.jdbc.MysqlCharset[]) (declaration of 'com.mysql.jdbc.CharsetMapping' appears in /data/app/allanko.quizzerappandroid-1/base.apk) 
W/System.err:  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963) 
W/System.err:  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896) 
W/System.err:  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885) 
W/System.err:  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) 
W/System.err:  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:877) 
W/System.err:  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:873) 
W/System.err:  at com.mysql.jdbc.Util.handleNewInstance(Util.java:422) 
W/System.err:  at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410) 
W/System.err:  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328) 
W/System.err:  at java.sql.DriverManager.getConnection(DriverManager.java:569) 
W/System.err:  at java.sql.DriverManager.getConnection(DriverManager.java:219) 
W/System.err:  at allanko.quizzerappandroid.LoginActivity$CDatabase.connect(LoginActivity.java:55) 
W/System.err:  at allanko.quizzerappandroid.LoginActivity$CDatabase.<init>(LoginActivity.java:43) 
W/System.err:  at allanko.quizzerappandroid.LoginActivity.onCreate(LoginActivity.java:19) 
W/System.err:  at android.app.Activity.performCreate(Activity.java:6664) 
W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) 
W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
W/System.err:  at android.app.ActivityThread.-wrap12(ActivityThread.java) 
W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err:  at android.os.Looper.loop(Looper.java:154) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:6077) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
W/System.err: Caused by: java.lang.VerifyError: Verifier rejected class com.mysql.jdbc.CharsetMapping: void com.mysql.jdbc.CharsetMapping.<clinit>() failed to verify: void com.mysql.jdbc.CharsetMapping.<clinit>(): [0x4287] Invalid reg type for array index (Precise Reference: com.mysql.jdbc.MysqlCharset[]) (declaration of 'com.mysql.jdbc.CharsetMapping' appears in /data/app/allanko.quizzerappandroid-1/base.apk) 
W/System.err:  at com.mysql.jdbc.CharsetMapping.getNumberOfCharsetsConfigured(CharsetMapping.java:687) 
W/System.err:  at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:464) 
W/System.err:  at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
W/System.err:  at java.lang.reflect.Constructor.newInstance0(Native Method) 
W/System.err:  at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
W/System.err:  at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
W/System.err: ... 19 more 
W/gralloc_ranchu: Gralloc pipe failed 

나는 완전히 절망적입니다.

미리 답변 해 주셔서 감사합니다.

+0

귀하의 MySQL은 어디에서 실행되고 있습니까? –

+0

내 로컬 호스트에 있습니다. – scarface

+0

그건 그렇고 로컬 mysql 또는 원격 서버에 연결하려고하는지 여부는 동일합니다. – scarface

답변

0

희망 사항 해당 this 링크를 사용하면 문제를 해결하는 데 도움이됩니다. 그렇게되면 해당 라이브러리를 참조하는 대신 프로젝트를 참조했을 것입니다.

컴파일러는 메서드 서명이 집계되지 않는 이런 종류의 문제를 표시합니다. JVM은 클래스가로드 될 때 바이트 코드를 확인하고, 바이트 코드가 허용해서는 안되는 일을 시도 할 때 VerifyError을 던집니다. 이를 확인하는

다른 가능성은 다음과 같습니다

  1. 이 때문에 참조 라이브러리에서 변경 될 수 있습니다. Clean Project 다음에 Build을 입력하면 도움이 될 수 있습니다.
  2. IDE를 다시 시작하면 잘못된 IDE 버전을 참조하는 데 도움이 될 수 있습니다.
0

동일한 문제가있었습니다. (미안, 나는 영어를 잘 못해.)

내 솔루션이 MySql Driver x MariaDB Driver로 변경되었습니다.

같은 이름의 com.mysql.jdbc.CharsetMapping 클래스가 두 개 있다고 생각합니다. MariaDB를 사용할 때 org.mariadb.jdbc.Driver 두 번째 클래스를 org.mariadb.jdbc.CharsetMapping으로 변경하고 문제가 해결되었습니다.

이 정보가 도움이 되었기를 바랍니다.

감사합니다.