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.
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ță.
Leave A Comment?