2010-08-05 8 views
8

Есть ли какой-нибудь образец? У меня есть приложение для Android, и мне нужно подключиться к серверу mysql на моей машине, что является лучшим способом?Как подключить Android к серверу базы данных

я не должен использовать JDBC, объяснение здесь

Никогда не используйте драйвер базы данных через Интернет-соединение, для любой базы данных, для любой платформы, для любого клиента, в любом месте. Это удваивается для мобильных устройств. Драйверы базы данных предназначены для работы в локальной сети и не предназначены для слабого/прерывистого соединения или высокой задержки.

И должен идти:

DefaultHttpClient httpclient = new DefaultHttpClient(); 

Но нет ни одного примера в том, как открыть соединение или выполнить простой оператор SQL. Кто-нибудь мог мне помочь?

ответ

9

Вы должны либо использовать веб-службы, либо реализовать обработчик HTTP и передать его RESTful способом.

0

Вы не сможете напрямую подключиться к базе данных MySQL с помощью HttpClient, поскольку база данных MySQL не работает с этим протоколом.

Вторая часть ответа на связанный с вами вопрос рекомендует использовать веб-службы и использовать их для связи с сервером базы данных. Это именно то, что вы могли бы сделать с HttpClient.

+0

Таким образом, невозможно подключиться к Mysql с помощью HttpClient, поэтому что следует использовать вместо этого, если я не могу использовать jdbc или HttpClient? – Alex

+2

Вы можете использовать HttpClient, вам просто нужно написать веб-приложение, которое может обрабатывать информацию между мобильным устройством и базой данных. Веб-служба RESTful будет делать то, что вы хотите. http://www.ibm.com/developerworks/webservices/library/ws-restful/ – LizB

+0

но, кажется, мне нужен один веб-сервер как средний уровень, это правильно? – Alex

2

Чтобы подключиться к серверу MySQL, вам нужен клиент MySQL. Android не поставляется с библиотеками MySQL. Возможно, вы сможете взять общую библиотеку Java MySQL и выпустить ее для работы с Android, но это будет большой шаг и потрачено впустую.

Ссылка, на которую вы указали, уже сказала вам, что то, что вы пытаетесь сделать, в первую очередь ошибочно. Не подключайтесь к базе данных через Интернет! Вам потребуется что-то на вашем сервере, которое отвечает на запросы HTTP, просматривает данные в базе данных и отправляет их через HTTP. В ссылке уже упоминалось несколько вариантов. Вы даже можете написать что-то сами, хотя, скорее всего, проще использовать существующее решение, чем пытаться сделать свой собственный подход безопасным и взломанным.

0

Если вам нужно обмениваться данными между несколькими телефонами, я бы рекомендовал разоблачить их как веб-службу. Если данные должны быть доступны только на определенном телефоне (и вы хотите оставаться реляционным), вы можете использовать sqlite.

+0

Мне нужно перевести с телефона на базу данных – Alex

2

Я попытался подключить DatabaseServer из приложения Android, изначально я столкнулся с некоторой проблемой, пока я использовал jtds, jar-пакет для поддержки драйверов баз данных, вместо использования jar-файла с использованием файла jar mysql-Connector для поддержки драйверов баз данных. mysql-connector jar file "mysql-connector-java-5.1.24-bin.jar". поместите этот файл jar в папку проектов libs.

немного фрагмент кода:

`String url="jdbc:mysql://(IP-of databaseServer):3306/DBNAME";` 
`String driver="org.gjt.mm.mysql.Driver";` 
`String username="XYZ";//user must have read-write permission to Database 
`String password= "*********";`//user password 

`try{ 
    Class.forName(driver).newInstance();//loading driver 
    Connection con = DriverManager.getConnection(url,username,password); 
    /*once we get connection we can execute ths SQL command to Remote Database Server with the help mysql-connector driver over Internet*/ 

}`  
`catch(Exception e){ 
    e.printStackTrace(); 
}` 

Я надеюсь, что это может работать.

Cheers Rajesh P Yadav.

2

Я поклонник Offline First, что означает, что ваше приложение должно быть доступно без подключения.

Чтобы облегчить это, я бы рекомендовал использовать локальную базу данных SQLite и синхронизировать с удаленной базой данных в режиме онлайн.

Вы можете использовать такой инструмент, как SymmetricDS или Daffodil Replicator, для синхронизации локальных и удаленных баз данных через HTTP (S).

Смежные вопросы