Conectare aplicatie Android la server MySQL

Configurare noua (How To)

Situatie

În această postare vom vedea cum putem conecta o aplicatie Android la baza de date MySQL folosind mysql-connector.jar. Puteți descărca Jar Library folosind acest link.

Notă: Nu folosesc niciun tip de Webservice sau altă bibliotecă de aplicații web.

Solutie

Pasi de urmat

Creați o nouă aplicație Android în Android Studio cu

  • Numele pachetului:  test.mysqlapp
  • Numele cererii: MySQLApp

Puteți numi întotdeauna numele pachetului și aplicației în conformitate cu cerințele dvs.

Aplicație de lucru:

Aplicația va încerca mai întâi să se conecteze cu baza de date MySQL și pe conexiunea de bază de date cu succes, aplicația Android va afișa date dintr-un tabel pe un Android TextView. Se va conecta prin adresa IP a bazei de date cu o acreditare corectă a bazei de date.

  • Creare baza de date in MySQL
create schema myDB
use myDB

create table tblCountries
(
ID int NOT NULL AUTO_INCREMENT primary key,
Country varchar(255) NOT NULL
)

Insert into tblCountries (Country) values ('India')
Insert into tblCountries (Country) values ('Australia')
Insert into tblCountries (Country) values ('Mauritius')
Insert into tblCountries (Country) values ('USA')
Insert into tblCountries (Country) values ('England')
Insert into tblCountries (Country) values ('New Zealand')
Insert into tblCountries (Country) values ('Spain')

Select * from tblCountries
select distinct Country from tblCountries

Acum, deschideți-vă fișierul activity_main.xml și modificați-l ca mai jos:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:padding="5dp">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"
android:text="Android MySQL Application"
android:textColor="@color/colorAccent"
android:textSize="20sp"
android:textStyle="bold" />

<TextView
android:id="@+id/txtData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:text="Your Data will be Displayed here"
android:textStyle="bold" />

<Button
android:id="@+id/btnFetch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="2dp"
android:background="@color/colorPrimaryDark"
android:minWidth="250dp"
android:text="Fetch Data"
android:textColor="#fff" />

<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="2dp"
android:background="@color/colorAccent"
android:minWidth="250dp"
android:text="Clear"
android:textColor="#fff" />

</LinearLayout>

Aspectul conține un TextView Android pentru a afișa datele tabelului nostru din baza de date MySQL și două butoane, unul pentru conectarea la baza de date și altul pentru ștergerea conținutului TextView.

Baza de date MySQL Android Connect programatic 022

Acum, hai să-l codificăm.

MainActivity.java:

Declarați această variabilă în clasa dvs. Java

private static final String url = "jdbc:mysql://192.168.0.192:3306/myDB";
private static final String user = "utilizator";
private static final String pass = "1234";
Button btnFetch,btnClear;
TextView txtData;

Și inițializați-le pe metoda Creare (onCreate):
txtData = (TextView) this.findViewById(R.id.txtData);
btnFetch = (Button) findViewById(R.id.btnFetch);
btnClear = (Button) findViewById(R.id.btnClear);

url, utilizator, parola trebuie să fie credențiale valide și corecte ale bazei de date mySql pentru o conexiune de succes Android-MySQL .

192.168.0.192 este adresa IP a laptopului meu și 3306 este numărul meu de port la care să mă conectez.

Realizați un Android ASyncTask. Acest lucru va accepta comanda și va încerca să vă conectați cu baza de date și pentru a conecta cu succes MySQL să atribuiți o variabilă String cu datele din tabel.

Cod:

private class ConnectMySql extends AsyncTask<String, Void, String> {
String res = "";

@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(MainActivity.this, "Please wait...", Toast.LENGTH_SHORT)
.show();

}

@Override
protected String doInBackground(String... params) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, pass);
System.out.println("Databaseection success");

String result = "Database Connection Successful\n";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select distinct Country from tblCountries");
ResultSetMetaData rsmd = rs.getMetaData();

while (rs.next()) {
result += rs.getString(1).toString() + "\n";
}
res = result;
} catch (Exception e) {
e.printStackTrace();
res = e.toString();
}
return res;
}

@Override
protected void onPostExecute(String result) {
txtData.setText(result);
}
}

Codul complet al fișierului MainActivity.java

package test.mysqlapp;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class MainActivity extends AppCompatActivity {

private static final String url = "jdbc:mysql://192.168.0.192:3306/myDB";
private static final String user = "utilizator";
private static final String pass = "1234";
Button btnFetch,btnClear;
TextView txtData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtData = (TextView) this.findViewById(R.id.txtData);
btnFetch = (Button) findViewById(R.id.btnFetch);
btnClear = (Button) findViewById(R.id.btnClear);
btnFetch.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ConnectMySql connectMySql = new ConnectMySql();
connectMySql.execute("");
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
txtData.setText("");
}
});

}

private class ConnectMySql extends AsyncTask<String, Void, String> {
String res = "";

@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(MainActivity.this, "Please wait...", Toast.LENGTH_SHORT)
.show();

}

@Override
protected String doInBackground(String... params) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, pass);
System.out.println("Database action success");

String result = "Database Connection Successful\n";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select distinct Country from tblCountries");
ResultSetMetaData rsmd = rs.getMetaData();

while (rs.next()) {
result += rs.getString(1).toString() + "\n";
}
res = result;
} catch (Exception e) {
e.printStackTrace();
res = e.toString();
}
return res;
}

@Override
protected void onPostExecute(String result) {
txtData.setText(result);
}
}

}

Și acum executați aplicația. La apăsarea butonului „Fetch Data” va prelua date din tabelul bazei de date MySQL.

Notă: Dacă vă aflați pe un laptop personal sau un computer cu router WiFi conectat la acesta și dispozitivul Android conectat la același router, acesta va funcționa, adică trebuie să fie aceeași rețea pentru a funcționa. Dacă baza de date este în rețeaua dispozitivului dvs., nu va funcționa. De asemenea, dacă utilizați rețea de date celulare, baza de date trebuie să fie pe Internet și ar trebui să poată fi conectată de la distanță.

Android Connect MySQL Database Programmatically 02

Tip solutie

Permanent

Voteaza

(42 din 90 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?