sql >> Databáze >  >> RDS >> Mysql

Můžeme připojit vzdálenou databázi MySQL v Androidu pomocí JDBC?

V zásadě:můžete se připojit k serveru MySQL (nebo k čemukoli jinému, co používáte), ale neměli byste to můžete provést přímo z aplikace pro Android.

Důvody:

  1. Aplikace pro Android lze dekompilovat a klient bude mít přihlašovací údaje pro přístup k vaší databázi. Pokud používáte správné hackerské nástroje, jako je Backtrack , pak může tento škodlivý klient přistupovat k datům ve vaší databázi, připojit se k nim a využívat je.

  2. Pokud je vaše aplikace pro klienty po celém světě, měli by klienti otevřít a udržovat připojení k vaší databázi podle operace nebo sady operací. Otevření připojení k fyzické databázi zabere spoustu času, i když je váš počítačový klient v síti LAN vedle serveru databázového stroje. Nyní si představte, že otevíráte spojení ze země na druhém konci světa, např. Čína nebo Japonsko nebo ze země v Jižní Americe, jako je Brazílie nebo Peru (kde žiji).

Z těchto 2 důvodů, na které mohu přijít, je špatný nápad dokonce se pokoušet připojit k MySQL nebo jinému databázovému stroji přímo z vašeho telefonního zařízení.

Jak tento problém vyřešit? Použijte architekturu orientovanou na služby, kde budete mít alespoň dvě aplikace:

  1. Aplikace poskytovatele služeb. Tato aplikace bude vytvářet a publikovat webové služby (nejlépe RESTful) a může vytvářet zásady pro využívání webových služeb, jako je autentizace a autorizace uživatele. Tato aplikace se také připojí k databázi a provede proti ní operace CRUD.

  2. Aplikace pro spotřebitele služby. Toto by byla vaše aplikace pro Android (nebo jakákoli jiná mobilní aplikace).

Z vaší otázky se zaměřujete na bod 1. Jak jsem řekl ve svých komentářích, můžete vytvořit webovou aplikaci v Javě, vytvořit tam službu RESTful, která se scvrká na POJO (obyčejný starý java objekt), který má metodu na službu. V této metodě, protože je to koneckonců obyčejná Java, můžete přidat další funkce, jako je použití JDBC.

Zde je příklad zahájení pomocí Jersey, Jackson (knihovna JSON) a JDBC:

@Path("/product")
public class ProductRestService {

    @GET
    @Path("/list")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        List<Product> productList = new ArrayList<>();
        Connection con = ...; //retrieve your database connection
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT id, name FROM product");
        while (rs.next()) {
            Product product = new Product();
            product.setId(rs.getInt("id"));
            product.setName(rs.getString("name"));
            productList.add(product);
        }
        //ALWAYS close the resources
        rs.close();
        stmt.close();
        conn.close();
        return productList;
    }
}

Další konfigurace webové aplikace Java můžete zkontrolovat v tutoriálu, jako je mkyong nebo Vogella's nebo jakékoli jiné podobné věci (je to příliš mnoho informací na to, aby je bylo možné umístit do této odpovědi).

Všimněte si, že pak se tato aplikace může vyvinout ve vrstvenou aplikaci a kód JDBC půjde do třídy DAO a poté do ProductRestService třída bude přistupovat k databázi prostřednictvím této třídy DAO. Zde je další příklad zahájení:

public class ProductDao {
    public List<Product> getProducts() {
        List<Product> productList = new ArrayList<>();
        Connection con = ...; //retrieve your database connection
        //the rest of the code explained above...
        return productList;
    }
}

@Path("/product")
public class ProductRestService {
    @GET
    @Path("/list")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        ProductDao productDao = new ProductDao();
        return productDao.getProducts();
    }
}

A na tento projekt můžete aplikovat další změny, stejně jako se vyvíjí.

Můžete mi říct, co tady dělá PHP? (pokud vyvíjím s PHP)

Místo psaní aplikace poskytovatele služeb v Javě (jak je uvedeno výše), můžete to udělat v PHP. Nebo v Pythonu, Ruby, C#, Scala nebo v jakémkoli jiném programovacím jazyce, který vám tuto technologii poskytuje. Opět si nejsem jistý, jaký druh tutoriálu čtete, ale mělo by to být někde vysvětleno a vysvětleno, že pro účely tohoto tutoriálu budete služby vytvářet pomocí PHP. Pokud se cítíte pohodlněji psát tyto služby v Javě než v PHP nebo jiném jazyce, není problém. Vaše aplikace pro Android se ve skutečnosti nestará o to, která technologie se používá k produkci webových služeb, bude se starat pouze o využití služeb a o to, aby data z nich mohla být spotřebována.



  1. Rails a PostgreSQL:Role postgres neexistuje

  2. Spark Dataframes UPSERT to Postgres Table

  3. Jak STRCMP() funguje v MariaDB

  4. Postgres analogie k CROSS APPLY na SQL Server