JDB C Android Проблемы с подключением к серверу Studio LAMP - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь закодировать приложение android, которое подключается к серверу MySQL, размещенному локально на Raspberry Pi с apache и phpmyadmin.

Я использую драйвер JDB C чтобы подключить базу данных к приложению, однако я не могу заставить все процессы БД работать, процесс Мой вход в систему, кажется, работает, однако я сомневаюсь, что он работает правильно, мой процесс регистрации не вставляет данные и запрос извлечения на процесс меню пропуска заставляет приложение создавать sh.

Любой вклад, который вы, ребята, имеете в отношении того, что можно исправить, будет принят, поскольку Covid19 и мои лекторы живут в районах с плохим inte rnet I у меня ограниченный доступ к тем, кем я обычно управляю.

ConnectionClass:


import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/*public String ip = "192.168.1.211:1433";
    public String classs = "net.sourceforge.jtds.jdbc.Driver";
    public String db = "mysql";
    public String un = "app@%";
    public String password = "pass";*/

public class ConnectionClass extends AppCompatActivity {



    //static reference to itself jdbcdb
    private static ConnectionClass instance = new ConnectionClass();
    public static final String URL = "jdbc:mysql://192.168.1.211:3306/mysql";
    public static final String USER = "pmauser";
    public static final String PASSWORD = "raspberry";
    public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";

    //private constructor
    private ConnectionClass() {
        try {
            //Step 2: Load MySQL Java driver
            Class.forName(DRIVER_CLASS);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            Log.e("ERRO2", e.getMessage());
        }
    }

    private Connection createConnection()
{

        Connection connection = null;
        try {
            //Step 3: Establish Java MySQL connection
            connection = DriverManager.getConnection(URL, USER,PASSWORD);

        } catch (SQLException e) {
           Log.e("ERROR: Unable to Connect to Database.",e.getMessage());
        }
        return connection;
}

    public static Connection getConnection()
    {
        return instance.createConnection();
    }
}



Логин (я знаю, что есть орфографическая ошибка):


import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class LoginPassanger extends AppCompatActivity {

    ConnectionClass connectionClass;
    Button proceedbut;
    Button RegBUT;
    EditText Uname, PWD;
    ProgressBar progressBar;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_passanger);
       // connectionClass = new ConnectionClass();
        proceedbut = (Button) findViewById(R.id.proceedbut);
        RegBUT = (Button) findViewById(R.id.RegBUT);
        Uname = (EditText) findViewById(R.id.Email);
        PWD = (EditText) findViewById(R.id.PWD);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        progressBar.setVisibility(View.GONE);


        proceedbut.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                CheckLogin checklogin = new CheckLogin();
                checklogin.execute("");
            }
        });

        RegBUT.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(), regpass.class);
                startActivity(i);
                setContentView(R.layout.activity_regpass);
            }
        });


        ImageButton backBUT = findViewById(R.id.backBUT);
        backBUT.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);
                setContentView(R.layout.activity_main);
            }
        });
    }

    public class CheckLogin extends AsyncTask<String, String, String> {

        String z = "";
        Boolean isSuccess = false;

        String usernam = Uname.getText().toString();
        String passwordd = PWD.getText().toString();

        @Override
        protected void onPreExecute() {
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        protected void onPostExecute(String z) {
            progressBar.setVisibility(View.GONE);
            Toast.makeText(LoginPassanger.this,z, Toast.LENGTH_SHORT).show();
            if(isSuccess == true) {
                Toast.makeText(LoginPassanger.this,z,Toast.LENGTH_SHORT).show();
                Intent i = new Intent(getApplicationContext(), PassMenu.class);
                i.putExtra("Uname",usernam);
                i.putExtra("PWD",passwordd);
                startActivity(i);
                setContentView(R.layout.activity_pass_menu);
            }
        }

        @Override
        protected String doInBackground(String... params) {

            if (usernam.trim().equals("") || passwordd.trim().equals("")) {
                z = "Please enter username and password";
            } else {/*
                try {
                    Connection con = connectionClass.CONN();
                    if (con == null) {
                        z = "Check network connection";
                    } else {
                        String query = "select * from passenger where email = '" + usernam + "' and  upass = '" + passwordd + "';";
                        Statement stmt = con.createStatement();
                        ResultSet rs = stmt.executeQuery(query);
                        if (rs.next()) {
                            z = "Login Successful";
                            isSuccess = true;
                            con.close();
                        } else {
                            z = "Invalid Cerdentials!";
                            isSuccess = false;
                            con.close();
                        }*/
                   isSuccess = Login(usernam,passwordd);
                   if (isSuccess = true){
                       z = "Login Successful";
                   }
                   else {z = "invalid Login";}

            }
            return z;
        }

        public boolean Login(String usernam,String passwordd)
        {
            ResultSet rs = null;
            Connection connection = null;
            Statement statement = null;
            String query="";
            query = "select * from passenger where email = '" + usernam + "' and  upass = '" + passwordd + "';";
            boolean successful = false;
            try {
                connection = ConnectionClass.getConnection();
                statement = connection.createStatement();
                rs = statement.executeQuery(query);
               if (rs.next())
                {
                 successful = true;
                }
                connection.close();
            }
            catch (SQLException e)
            {
                e.printStackTrace();
                Log.e("ERRO1", e.getMessage());
            }
            return successful;
        }


    }
}

Регистрация


package com.main.stdpool;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class regpass extends AppCompatActivity {

    Button RegBUT;
    EditText Email, PWD, Fname, Sname;
    ProgressBar progressBar;

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

        RegBUT = (Button) findViewById(R.id.RegBUT);
        Email = (EditText) findViewById(R.id.Email);
        PWD = (EditText) findViewById(R.id.PWD);
        Fname = (EditText) findViewById(R.id.Fname);
        Sname = (EditText) findViewById(R.id.Sname);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        progressBar.setVisibility(View.GONE);

        RegBUT.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Register reg = new Register();
                reg.execute("");
            }
        });

    }

    public class Register extends AsyncTask<String, String, String> {

        String z = "";
        Boolean isSuccess = false;

        String usernam = Email.getText().toString();
        String passwordd = PWD.getText().toString();
        String forename = Fname.getText().toString();
        String surname = Sname.getText().toString();

        @Override
        protected void onPreExecute() {
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        protected void onPostExecute(String z) {
            progressBar.setVisibility(View.GONE);
            Toast.makeText(regpass.this, z, Toast.LENGTH_SHORT).show();
            if (isSuccess) {
                Toast.makeText(regpass.this, z, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        protected String doInBackground(String... params) {

            if (usernam.trim().equals("") || passwordd.trim().equals("") || forename.trim().equals("") || surname.trim().equals("")) {
                z = "Please enter Email, Password, Forename & Surname";
            } else {
                isSuccess = Reg(usernam, passwordd, forename, surname);
                if (isSuccess = true) {
                    z = "Registration Successful";
                    Intent i = new Intent(getApplicationContext(), LoginPassanger.class);
                    startActivity(i);
                    setContentView(R.layout.activity_login_passanger);
                } else {
                    z = "haha nope!";
                }

            }
            return z;
        }

        public boolean Reg(String usernam, String passwordd, String forename, String surname) {
            ResultSet rs = null;
            Connection connection = null;
            Statement statement = null;
            String query = "";
            query = "insert into passenger values (NULL, '" + forename + "','" + surname + "','" + usernam + "','" + passwordd + "');";
            boolean successful = false;
            try {
                connection = ConnectionClass.getConnection();
                statement = connection.createStatement();
                rs = statement.executeQuery(query);
                successful = true;
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
                Log.e("ERRO1", e.getMessage());
            }
            return successful;
        }

    }

}

PassMenu


import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class PassMenu extends AppCompatActivity {

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

        //String Uname = getIntent().getStringExtra("Uname");
        //String PWD = getIntent().getStringExtra("PWD");
        String Uname = "test@passenger.com";
        String PWD = "testpass";
        TextView Welcome = (TextView) findViewById(R.id.Welcome);
        Button GoBUT = (Button) findViewById(R.id.GoBUT);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
        progressBar.setVisibility(View.GONE);

        String Fname = getFname(Uname, PWD);
        Welcome.setText("Welcome "+Fname);
    }

    public String getFname(String Uname, String PWD){
        ResultSet rs = null;
        Connection connection = null;
        Statement statement = null;
        String query="";
        String fname = "";
        query = "select fname from passenger where email = '" + Uname + "' and  upass = '" + PWD + "';";
        try {
            connection = ConnectionClass.getConnection();
            statement = connection.createStatement();
            rs = statement.executeQuery(query);
            while (rs.next())
            {
                fname = rs.getString("fname");
            }

            connection.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
            Log.e("ERRO1", e.getMessage());
        }
        return fname;
    }



}

Я предполагаю, что я что-то слишком усложнил, но если вы, ребята, могли бы помочь, это действительно помогло бы.

...