Страница 1 из 1

Android & MySQL

Добавлено: 19 ноя 2012, 00:06
Ivan Zamurenko
Добрый вам день. Мне посоветовали вас как профессионалов в языке программирования такого как Джава. Если у вас есть секундочка времени, можно у вас поинтересоваться? МНе нужна помощь в разработке приложения под андроид, а именно нужно разработать удаленный доступ к БД MySQL. Возможно ли это сделать на "андрюше"? На джава я этого добился. Вот код:

Код: Выделить всё

public static void main(String[] args) {

	Connection conn = null;
			    try
			    {
			        String userName = "Visitor";
			        String password = "visitor";
			        String url = "jdbc:mysql://192.168.0.105/test";
			        Class.forName ("com.mysql.jdbc.Driver").newInstance();
			        conn = DriverManager.getConnection (url, userName, password);
			 
			        Statement stat = conn.createStatement();
			        ResultSet res = stat.executeQuery("SELECT * " +
			        		"FROM `testtable` " +
			        		"where 1 " +
			        		"limit 10; "); 
			        if (res.next()){ 
			            System.out.println("Count rows in table: " + res.getInt(1)); 
			        }
			    }catch (Exception e){
			    	System.err.println (e.getMessage());
			    	}
			    finally
			    {
			        if (conn != null)
			        {
			            try
			                {
			                    conn.close ();
			                }
			            catch (Exception e) {
			            	e.printStackTrace(); 
			            	}
			        }
			    }
	}
На андроиде такие действия не прокатывают. Код:

Код: Выделить всё

public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main); 
		
		tv = (TextView) findViewById (R.id.tv);

		Connection conn = null;
		    try
		    {
		        String userName = "Visitor";
		        String password = "visitor";
		        String url = "jdbc:mysql://192.168.0.105/test";
		        Class.forName ("com.mysql.jdbc.Driver").newInstance();
		        conn = DriverManager.getConnection (url, userName, password); 
		 
		        Statement stat = conn.createStatement();
		        ResultSet res = stat.executeQuery("SELECT * " +
		        		"FROM `testtable` " +
		        		"where 1 " +
		        		"limit 10; "); // выполняем запрос
		        if (res.next()){  // переходим к очередной строке ответа от сервера, в данном случае - первой
		            System.out.println("Count rows in table: " + res.getInt(1));
		        }
		    }catch (Exception e){
		    	tv.setText("ERROR \n" + e + "\n\n\n");
		    	System.err.println (e.getMessage());
		    	}
		    finally
		    {
		        if (conn != null)
		        {
		            try
		                {
		                    conn.close ();
		                }
		            catch (Exception e) {
		            	tv.append("ERROR \n" + e + "\n\n\n");
		            	e.printStackTrace(); 
		            	}
		        }
		    }

}
Выбивает много ошибок, помню что-то с сокетом (java.net.SocketException : android.os.NetworkOnMainThreadException). Исходя из ошибки, я сделал вывод, что в главном потоке нельзя присоединятся к БД, и сделал другой класс. Но в итоге пришел к этой же ошибке. Простите что беспокою, но мне действительно нужен ВАША помощь. Я облазил кучу форумов, перерыл материала нормальненько так, но не нашел информации. =(. Надеюсь на вашу помощь. Спасибо.

Re: Android & MySQL

Добавлено: 19 ноя 2012, 00:50
rezak90
Правильно что столько ошибок, ведь андроид не для этого создан. Использование сети нужно производить в отдельном потоке, если до 10 апи это ещё прокатывало то с 10-го это уже необходимо и андроид сам говорит что "давай до свиданье, не дам тебе сеть".
Что касается jdbc, то вам придётся такой велосипед изобрести что будете проклинать андроид))) На сколько я помню официально андроид не поддерживает (та и нету в нём) jdbc драйвера. Но как то люди умудряются его подключать, здесь на форуме одной девушке удалось, так что можете у неё проконсультироваться =)

Re: Android & MySQL

Добавлено: 19 ноя 2012, 03:33
Ivan Zamurenko
Спасибо за ответ! Я уже намучился с этой jdbc, но я подключил драйвер. Подключил правильно, потому что ошибку мой try{}catch не словил. Сегодня уже достаточно поздно и я пожалуй пойду спать, а завтра уже начну что-то думать.

Читал множество тем, где описано как подключать и приведен пример в коде...и так обидно, что все то, что написано на просторах интернета - не работает...

В андроид-маркете, есть программа "MySQL Connection", она отлично работает и я вот хотел по её принципу, разработать соединение с БД СКЛ. Как вы думаете, она работает не через jdbc?

Re: Android & MySQL

Добавлено: 23 янв 2013, 10:30
excellion
Ivan Zamurenko писал(а):Спасибо за ответ! Я уже намучился с этой jdbc, но я подключил драйвер. Подключил правильно, потому что ошибку мой try{}catch не словил. Сегодня уже достаточно поздно и я пожалуй пойду спать, а завтра уже начну что-то думать.

Читал множество тем, где описано как подключать и приведен пример в коде...и так обидно, что все то, что написано на просторах интернета - не работает...

В андроид-маркете, есть программа "MySQL Connection", она отлично работает и я вот хотел по её принципу, разработать соединение с БД СКЛ. Как вы думаете, она работает не через jdbc?

Как подключили драйвер ? где его качали ?
Расспишите плиз если не сложно, просто меня интересует эта же тема

Re: Android & MySQL

Добавлено: 04 фев 2013, 15:07
Ivan Zamurenko
excellion писал(а):
Ivan Zamurenko писал(а):Спасибо за ответ! Я уже намучился с этой jdbc, но я подключил драйвер. Подключил правильно, потому что ошибку мой try{}catch не словил. Сегодня уже достаточно поздно и я пожалуй пойду спать, а завтра уже начну что-то думать.

Читал множество тем, где описано как подключать и приведен пример в коде...и так обидно, что все то, что написано на просторах интернета - не работает...

В андроид-маркете, есть программа "MySQL Connection", она отлично работает и я вот хотел по её принципу, разработать соединение с БД СКЛ. Как вы думаете, она работает не через jdbc?

Как подключили драйвер ? где его качали ?
Расспишите плиз если не сложно, просто меня интересует эта же тема
Прошу прощение за столь долгое молчание. Не видел этого поста =((.

Подключать же не сложно, нужно лишь включить его (этот драйвер) в проект и прописать несколько строчек в коде.

Код: Выделить всё

//My database values
	Connection SQLConnection = null;
	Statement st = null;
	ResultSet rs = null;

	String DatabaseAddr = "jdbc:mysql://192.168.0.101:3306/hotel", 
			DatabaseLogin = "Client", 
			DatabasePass = "client",
        sql_query = "SELECT radisson_blu.Flat FROM radisson_booking INNER JOIN radisson_blu ON radisson_booking.Flat = radisson_blu.Flat";

//DB_QUERY START
	public int db_Query () {
		try{ Class.forName("com.mysql.jdbc.Driver").newInstance();
			SQLConnection = DriverManager.getConnection(DatabaseAddr,DatabaseLogin,DatabasePass); //Connection to my DataBase
			} catch(Exception e) { Logs = "Operation Fail. Database not include \n";
			} try { 
					st = SQLConnection.createStatement(); //Create statement
					rs = st.executeQuery(sql_query); //Execute Query
					
					while (rs.next()) {countBusyRooms += 1;} //Query`s result
					Logs = "Operation success! \n";
			} catch(Exception e){ Logs = "Operation Fail:  \n" + e; 
        }
Код сверху, я думаю сможете разобраться.


Для того, чтобы добавить *.jar (этот драйвер), вам будет необходимо:
1)Правой кнопкой мыши, нажать на проект и выбрать из выпадающего списка "Build Path"
2)Build Path -> Configure Build Path..
3)Configure Build Path -> Libraries и нажать кнопку "Add External JARs"

Сам драйвер, я залил на депозит, потому что найти нормальный - сложно.
http://dfiles.ru/files/w00g6e6u7

Пробуйте, развивайтесь =). Удачи, вам.