Я пытаюсь закодировать приложение 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;
}
}
Я предполагаю, что я что-то слишком усложнил, но если вы, ребята, могли бы помочь, это действительно помогло бы.