Я столкнулся с этой ошибкой при подключении к базе данных mysql в Android Studio - PullRequest
0 голосов
/ 05 мая 2020

Я использую приведенный ниже код. Выдает ошибку в Android Studio. Я видел и другие соответствующие сообщения, и я понимаю, что ошибка может быть в методе doInBackground, но я не могу понять, какое место кода я должен изменить.

Вот код Java:

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

    username = (EditText) findViewById(R.id.username);
    password = (EditText) findViewById(R.id.pass);
    buttonLogin = (Button) findViewById(R.id.button);



        buttonLogin.setOnClickListener(new View.OnClickListener()  {


            @Override
                public void onClick (View v) {
                    System.out.println("IN ONCLICK");
                    new CheckLogin().execute();

                }
        });




}
public class CheckLogin extends AsyncTask<Void, Void ,Void>
{

    @Override
    protected Void doInBackground(Void... voids) {
        System.out.println("DOING BACKGROUND");



        try {
            System.out.println("IN TRY");
            Class.forName("com.mysql.jdbc.Driver");
            //Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_app?characterEncoding=latin1","root","/*ajdsikijliaj*$lklk%n^T!#@");
            String dbName = "db_app";
            String dbUserName = "root";
            String dbPassword = "/*ajdsikijliaj*$lklk%n^T!#@";
            String connectionString = "jdbc:mysql://localhost/" + dbName + "?user=" + dbUserName + "&password=" + dbPassword + "&useUnicode=true&characterEncoding=UTF-8";
            Connection con = DriverManager.getConnection(connectionString);

            String str = "Select * from users";
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(str);
            rs.next();


            if(rs.getString("Username").equals(username.getText()) && rs.getString("Password").equals(password.getText()))
            {     System.out.println("EQUAL");
                Intent loginIntent = new Intent(MainActivity.this,login.class);
                startActivity(loginIntent);
            }
            else {
                System.out.println("WRONG");
            }
            stmt.close();

        }
        catch (ClassNotFoundException | SQLException e)
        {
            System.out.println("In catch");
            e.printStackTrace();
        }

        return null;

    }



}

}

Ошибки, с которыми я сталкиваюсь

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.login10, PID: 17730
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:353)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)
 Caused by: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern : %n^
    at java.net.URLDecoder.decode(URLDecoder.java:177)
    at com.mysql.jdbc.NonRegisteringDriver.parseURL(NonRegisteringDriver.java:605)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:277)
    at java.sql.DriverManager.getConnection(DriverManager.java:569)
    at java.sql.DriverManager.getConnection(DriverManager.java:237)
    at com.example.login10.MainActivity$CheckLogin.doInBackground(MainActivity.java:75)
    at com.example.login10.MainActivity$CheckLogin.doInBackground(MainActivity.java:56)
    at android.os.AsyncTask$2.call(AsyncTask.java:333)
    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.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
    at java.lang.Thread.run(Thread.java:764) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...