Mysql
 sql >> база данни >  >> RDS >> Mysql

Можем ли да свържем отдалечена база данни MySQL в Android с помощта на JDBC?

По принцип:можете да се свържете с вашия MySQL (или каквото и да използвате) сървър, но не трябва направете това директно от приложението си за Android.

Причини:

  1. Приложенията за Android могат да бъдат декомпилирани и клиентът ще има идентификационни данни за достъп до вашата база данни. Ако използвате правилните инструменти за хакване като Backtrack , тогава този злонамерен клиент може да осъществява достъп, да се свързва и да използва данните във вашата база данни.

  2. Ако приложението ви е за клиенти от цял ​​свят, тогава клиентите трябва да отварят и поддържат връзка с вашата база данни за всяка операция или набор от операции. Отварянето на физическа връзка с база данни отнема много време, дори когато вашият компютърен клиент е в LAN до сървъра на базата данни. Сега си представете да отворите връзка от страна в другия край на света, напр. Китай или Япония или от страна в Южна Америка като Бразилия или Перу (където живея).

Поради тези 2 причини, които мога да измисля, е лоша идея дори да се опитвате да се свържете с MySQL или друг механизъм за база данни директно от вашето телефонно устройство.

Как да реша този проблем? Използвайте ориентирана към услуги архитектура, където ще имате поне две приложения:

  1. Приложение на доставчика на услуги. Това приложение ще създава и публикува уеб услуги (за предпочитане RESTful) и може да установи политики за използване на уеб услугите като удостоверяване на потребителя и оторизация. Това приложение също ще се свърже с базата данни и ще изпълнява CRUD операции срещу нея.

  2. Приложение за потребители на услуги. Това ще бъде вашето приложение за Android (или всяко друго мобилно).

От вашия въпрос вие се фокусирате върху точка 1. Както казах в коментарите си, можете да създадете уеб приложение на Java, да създадете услуга RESTful там, която се свежда до POJO (обикновен стар java обект), който има метод за услуга. При този метод, тъй като все пак е обикновена Java, можете да добавите друга функционалност, като използване на JDBC.

Ето един начален пример, използващ Jersey, Jackson (JSON библиотека) и 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;
    }
}

Можете да проверите за допълнителни конфигурации на уеб приложението Java в урок като mkyong's или Vogella's или което и да е друго подобно (това е твърде много информация, за да се постави в този отговор).

Имайте предвид, че тогава това приложение може да се развие в многослойно приложение и JDBC кодът ще влезе в клас DAO, а след това ProductRestService class ще има достъп до базата данни чрез този DAO клас. Ето още един пример за начало:

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();
    }
}

И можете да приложите други промени към този проект, както и да се развива.

Можете ли да ми кажете какво прави PHP тук? (ако разработвам с PHP)

Вместо да пишете приложението за доставчик на услуги в Java (както е показано по-горе), можете да го направите в PHP. Или на Python, Ruby, C#, Scala или всеки друг език за програмиране, който ви предоставя тази технология. Отново, не съм сигурен какъв вид урок четете, но това трябва да бъде обяснено някъде и да се обясни, че за целите на този урок ще създадете услугите, използвайки PHP. Ако се чувствате по-удобно да пишете тези услуги на Java, а не на PHP или друг език, няма проблем. Приложението ви за Android всъщност не се интересува коя технология се използва за създаване на уеб услугите, то ще се интересува само от използването на услугите и дали данните от тях могат да бъдат консумирани.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разгръщане и управление на MySQL NDB клъстер с ClusterControl

  2. Извличане на един ред, една колона със ЗНП

  3. Възможно ли е в MySQL да има индекс, базиран на функции?

  4. Примери за MySQL SOUNDEX().

  5. PDOException „не можа да намери драйвер“