Android и MySQL

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 16 июл 2013, 17:13

взял код Napalm. работает, в потоке.

а как сделать такое
есть метод , в нем выполняется код, запускаем поток на получение данных из базы, обрабатываем данные из базы
но не в потоке , а в методе , как бы это выполнялось в основном потоке

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 16 июл 2013, 18:01

Конечно так можно сделать, но и вопрос слишком общий.
По завершению потока вызывайте свой метод и обрабатывайте как хотите. Тем более, я посмотрела, ты курсор получаешь. Передавай его в любой метод и обрабатывай.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 16 июл 2013, 18:46

Foenix писал(а):Конечно так можно сделать, но и вопрос слишком общий.
По завершению потока вызывайте свой метод и обрабатывайте как хотите. Тем более, я посмотрела, ты курсор получаешь. Передавай его в любой метод и обрабатывай.
на андроиде это выглядит как изврашение, но видно придется привыкать к таким подходам...
решил через AsyncTask, но у меня там не курсор, я с mssql работаю тока через хранимки
кому интересно

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

  class Verify extends AsyncTask<String, Integer, String> {
        private String x;

        @Override
        protected String doInBackground(String... params) {
            java.sql.Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                conn = DriverManager.getConnection(Singleton.getUrl(), Singleton.getUserName(), Singleton.getPassword());
                String[] s = params;
                CallableStatement proc = (CallableStatement) conn.prepareCall("{ call verify('" + s[0] + "','" + s[1] + "','" + "xxxx" + "')}");
                ResultSet rs = proc.executeQuery();
                rs.next();
                x = rs.getString("cod");
                rs.close();
                conn.close();
            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }
            return x;
        }

        @Override
        protected void onPostExecute(String aVoid) {
            super.onPostExecute(aVoid);
            TextView tv = (TextView) findViewById(R.id.login);
            tv.setText(aVoid);
            intent = new Intent(context, ServicePage2.class);
            startActivity(intent);
        }

    }
        }

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 16 июл 2013, 21:02

я не поняла, в чем обработка состоит? курсор из одной строки, состощей из одного поля, что ли?
я имела ввиду resultset - Это почти что курсор (работать с ним нужно так же).
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 17 июл 2013, 05:26

Foenix писал(а):я не поняла, в чем обработка состоит? курсор из одной строки, состощей из одного поля, что ли?
я имела ввиду resultset - Это почти что курсор (работать с ним нужно так же).
если иметь это в виду "Это почти что курсор" то тут нет проблем.
в примере одна строка - это только пример
я подразумевал такое
есть метод, в нем идут какие-то вычисления, для этих вычислений надо обратиться к базе, получить данные , у же с ними продолжить вычисления, далее ещё раз обращение к базе (к другим таблицам)
т.е. "линейное программирование", тут такого неполучить.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 17 июл 2013, 09:07

assan писал(а):
Foenix писал(а):я не поняла, в чем обработка состоит? курсор из одной строки, состощей из одного поля, что ли?
я имела ввиду resultset - Это почти что курсор (работать с ним нужно так же).
если иметь это в виду "Это почти что курсор" то тут нет проблем.
в примере одна строка - это только пример
я подразумевал такое
есть метод, в нем идут какие-то вычисления, для этих вычислений надо обратиться к базе, получить данные , у же с ними продолжить вычисления, далее ещё раз обращение к базе (к другим таблицам)
т.е. "линейное программирование", тут такого неполучить.
да как же это не получить??? что за ерунда! Если у тебя база на сервере - пожалуйста, отправляй как будто с десктопа любой запрос - хоть хранимку, хоть выборку из вьюва, хоть просто запрос к таблице и точно так же обрабатывай результат. Или мы друг друга не понимаем. Всю жизнь работала с бд и тут работаю и с удаленной и с локальной - нет никаких проблем.
В чем задача-то состоит конкретно?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 17 июл 2013, 09:58

вот по этому коду

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


    package ru.test.mysqltest;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
     
    public class MainActivity extends Activity implements OnClickListener {
     
              Button input;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
           
            input = (Button) findViewById(R.id.doIt);
                input.setOnClickListener(this);
        }
     
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
     
        void connect() {
            try {
                    Log.d("My Logs", "Запускаем поток");
                    Thread t = new Thread(new Runnable() {
                    public void run() {
                                    Connection conn = null;
                                    String userName = "login";
                                    String password = "pass";
                                    String url = "jdbc:mysql://mysql-srv29435.ht-systems.ru:3306/bd_name";
                                    try {
                                            System.err.println("Подключаемся");
                                                            Class.forName("com.mysql.jdbc.Driver").newInstance();
                                                    } catch (InstantiationException e) {
                                                            // TODO Auto-generated catch block
                                                            e.printStackTrace();
                                                    } catch (IllegalAccessException e) {
                                                            // TODO Auto-generated catch block
                                                            e.printStackTrace();
                                                    } catch (ClassNotFoundException e) {
                                                            // TODO Auto-generated catch block
                                                            e.printStackTrace();
                                                    }
                                    try {
                                                            conn = DriverManager.getConnection(url, userName, password);
                                                            Log.d("MyLog", "Получилось");
                                                            Statement s = null;
                                                            s = conn.createStatement();
                                                            s.executeQuery("Select from users");
                                                            ResultSet rs = null;
                                                            rs = s.getResultSet();
                                                            while (rs.next()) {
                                                                    int idVal = rs.getInt("id");
                                                                    String passN = rs.getString("pass");
                                                                    String loginN = rs.getString("login");
                                                                    Log.d("MyLog", "логин"+loginN);
                                     
                                                            }
                                                            rs.close();
                                                            s.close();
                                                    } catch (SQLException e) {
                                                            System.err.println("Не получилось");
                                                            e.printStackTrace();
                                                    }
                                    try {
                                                            conn.close();
                                                    } catch (SQLException e) {
                                                            // TODO Auto-generated catch block
                                                            e.printStackTrace();
                                                    }
                          }
                        });
                        t.start();
                    } catch (Exception e) {
                            e.printStackTrace();
                            System.err.println("Не вышло");
                    }
        }
       
             
            @Override
            public void onClick(View v) {
                    switch (v.getId()) {
                case R.id.doIt:
                    Toast.makeText(this, "Вызвал", Toast.LENGTH_SHORT).show();
                    connect();
                    break;
                default:
                  break;
                }
            }
    }
     
запустить эту часть в основном потоке мне не удалось

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

try {
                                                            conn = DriverManager.getConnection(url, userName, password);
                                                            Log.d("MyLog", "Получилось");
                                                            Statement s = null;
                                                            s = conn.createStatement();
                                                            s.executeQuery("Select from users");
                                                            ResultSet rs = null;
                                                            rs = s.getResultSet();
                                                            while (rs.next()) {
                                                                    int idVal = rs.getInt("id");
                                                                    String passN = rs.getString("pass");
                                                                    String loginN = rs.getString("login");
                                                                    Log.d("MyLog", "логин"+loginN);
                                     
                                                            }
                                                            rs.close();
                                                            s.close();
                                                    } catch (SQLException e) {
                                                            System.err.println("Не получилось");
                                                            e.printStackTrace();
                                                    }
к примеру в основном потоке, в методе, мне нужно получить данные из базы, обработать их на основании обработанных данных изменить переменные медота, получить новые данные и прочее. т.е. преже чем продолжать мне надо дождаться данных из базы, а тут получается зпустил поток и продолжается выполнение дальше, а данных еще нет. они есть потом, но доступ к ним еще надо как-то сделать, конечно можно частично обработать полученные данные в потоке, но получить/ изменить переменные из вызвавшего класса просто так не получится..
я надеюсь понятно объяснил мои хотелки? может быть я не совсем правильно использую что-то?

при использовании SQLite

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

private void xxx(String... params){
String s1;
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(Singleton.getDbFile(), null);
тут чт-то делается
                String sql = "SELECT * FROM tbl where num=?";
                String[] s=params;
                Cursor c = db.rawQuery(sql, new String[]{s[0]});
                StringBuilder sb=new StringBuilder();
                if (c.moveToFirst()) {
                    do {
                        sb.append(c.getString(0)).append(",").append(c.getString(1)).append(";");
                    } while (c.moveToNext());
                }
                c.close();
                s1=sb.toString();

 тут что-то с s1.....

меняю переменный класса вызвавшего метод xxx

String sql = "SELECT * FROM tbl where num=?";
                String[] s=params;
                Cursor c = db.rawQuery(sql, new String[]{s[1]});
                StringBuilder sb=new StringBuilder();
                if (c.moveToFirst()) {
                    do {
                        sb.append(c.getString(0)).append(",").append(c.getString(1)).append(";");
                    } while (c.moveToNext());
                }
                c.close();
                s1=sb.toString();
                db.close;
ещё раз меняю переменный класса вызвавшего метод xxx
}
одно следует за другим и я не должен выйти из метода , пока всего его не пройду.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 17 июл 2013, 11:56

пробежалась по коду (времени особо нет), все у тебя хорошо, хотя и немножко каша в голове.
Вот смотри. Допустим у тебя авторизация и ты выбираешь где-то на сервере из базы логин и пароли (сравниваешь). Да, это все в потоке. но у потоков есть такая фишка как хэндлеры. Т.е. это такие штуки, которые как сигналы из потока в UI - можно посылать. "Я сделал-то-то, я уже сделал то-то и то-то." Я этими хэндлерами посылаю из потока какую угодно инфу в основной, например, об ошибках (если поток отправил что-то базе и получил ошибку).
Так вот. ЭТо допустим в потоке, когда с сервера приходит ответ, что пароль окей:

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

while (rs.next()) {
			...
					
						this.SendMsg(1,"Пароль верный");
					}
вот код метода потока, который посылает сообщения, но можно и просто без метода - посылать

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

private void SendMsg(int fl, String msg) {
		Message messageToSpinner = mHandler.obtainMessage();
		Bundle messageData = new Bundle();
		messageToSpinner.what = fl;
		messageData.putString("text", msg);
		messageData.putInt("doAfter", doAfter);
		messageToSpinner.setData(messageData);
		mHandler.sendMessage(messageToSpinner);
	}
Т.е. я в бандл сую то, что мне нужно потом в UI разобрать и получить инфу, например, у меня крутится спиннер во время авторизации, и я пользователю ничего делать не даю в основном потоке пока не сверится пароль.
А в основном потоке объявляю хэндлер (который указывается при создании потока)

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

hP = new Handler() {// При проверке пароля
			public void handleMessage(android.os.Message msg) {
				if (msg.what == 1) {// Правильный пароль
					
					spinner.dismiss();
...
Там можно любую логику писать, это все примет UI и покажет или дальше зашлет какую-то обработку.
Вот так можно дождаться окончания работы потока в UI.
Но если допустим просто скачиваются данные какие-то, то не нужно блокировать интерфейс, ясное дело.
Но время окончания приема данных - будет зафиксировано и можно начинать их обработку.

А нужно тебе еще как-то их обработать, можно даже в потоке это делать.
Допустим мне пришел курсор (резалтсет), ну какие проблемы? делаю в потоке, попутно оттуда посылая сообщения в UI о ходе процесса:

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

rs = st.executeQuery(queryString);

				this.SendMsg(2, "Сохранение списка клиентов в базу данных..");
				tblFirma.insertRSData1(rs);
				rs.close();
tblFirma - это у меня класс, где есть метод insertRSData1, я в этом методе принимаю резалтсет и обрабатываю его как мне нужно (то, о чем ты спрашивал с самого начала).
Поток выдели в отдельный класс, сделай ему конструктор, который будет данные принимать на вход какие тебе нужно (например, пароль из диалога с пользователем, хэндлер, еще что-то)...
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 17 июл 2013, 13:59

2Foenix
спасибо за предложенные решения, они очень подходят под те случаи , что ты описала
если в андроиде так решается - будутак и делать,
просто есть случаи когда требуется однопоточное програмирование, "линейное", "последовательное"
когда таким программирования и код читабельнее и проще.
да и таже авторизация, если отклик сервера гарантированно "мнгновенный" зачем лишние навороты делать, а если этот сервер повис - для этих целей иключения существуют. всё однопоточно решается

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 17 июл 2013, 16:38

assan писал(а): когда таким программирования и код читабельнее и проще.
забудь ты про это! не старый небось поди так говорить, это лишь твоя привычка
просто разве не интереснее понять то, что делает система, что задумывал разработчик, почему сделал имено так а не иначе? А когда с удовольствием это делаешь, то результат уже будет радостнее
assan писал(а): да и таже авторизация, если отклик сервера гарантированно "мнгновенный" зачем лишние навороты делать, а если этот сервер повис - для этих целей иключения существуют. всё однопоточно решается
ахаха, мгновенный-гарантированно
ты не понимаешь. Это универсальный инструмент, им руководит операционка. Винды руководят по-своему, андроид по-своему, ты сейчас пароль проверяешь, завтра будешь два миллиона паролей сверять, послезавтра как я 90 тыс записей тянуть, а у них - "забота о пользователе!" Нельзя все что ты видел на виндах переносить сюда - от интерфейса до внутренностей.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 17 июл 2013, 18:12

Foenix писал(а):ахаха, мгновенный-гарантированно
ты не понимаешь. Это универсальный инструмент, им руководит операционка. Винды руководят по-своему, андроид по-своему, ты сейчас пароль проверяешь, завтра будешь два миллиона паролей сверять, послезавтра как я 90 тыс записей тянуть, а у них - "забота о пользователе!" Нельзя все что ты видел на виндах переносить сюда - от интерфейса до внутренностей.
в общем надо попрощаться с хотелками и воспринимать данность как истину
я не против, главное лучше узнать эту данность.

2Foenix! а ты не пробовала работать через wss протокол? с сервером на котором к примеру tomcat?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 17 июл 2013, 18:24

нет, только через jdbc и http, что такое wss протокол даже не знаю
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

assan
Сообщения: 48
Зарегистрирован: 24 мар 2013, 22:31

Re: Android и MySQL

Сообщение assan » 18 июл 2013, 05:37

Foenix писал(а):нет, только через jdbc и http, что такое wss протокол даже не знаю
websockets
протокол поверх http.
wss -шифрованный
ws без шифрования
оснвные преимущества - очень маленький трафик, служебная информация около 10 байт, пониженная нагрузка на сервер.
и очень основное качество - инициатором передачи может быть сервер. поддерживаб мозила, хром, опера , ie10
после установки соединения , клиенту не надо посылать запросы о наличии новых данных, если что-то изменилось, и это изменение необходимо определённому клиенту - сервер может отправлять эти данные только этому клиенту.
ajax, jax-ws
структура : клиент-сервер(tomcat)-база(mysql,mssql)
я через wss отправлял команду с данными на сервер, сервер формировал запрос к базе(если такая команда) и обратно.
очень рекомендую обратить внимание.
для java есть хорошие библиотеки

Аватара пользователя
mozilalvfg
Сообщения: 85
Зарегистрирован: 10 авг 2013, 18:46

Re: Android и MySQL

Сообщение mozilalvfg » 11 авг 2013, 16:28

Уважаемые форумчане заранее извиняюсь за вопрос, но у меня нет выхода.
17 дней поиска в интернете, перечитывание Вашего форума и куча других, 5 разовая инсталляция win7 x64 sp1, уже даже не помню сколько раз eclipse + ADT перестанавливал, устанавливал и настраивал на ubuntu 12.04
и прописывал в java build path копировал в папку Libs

и у меня никак не получается запустить этот код для android application, на java всё прекрасно работает.
Прошу помощи! неведаю я что делать! база реальная пароли актуальние, находиться в онлайне.

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

package com.example.and;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;



public class MainActivity extends Activity {
	 
	   TextView tvOut;
	   Button btnOk;
	   Button btnCancel;
	 
	   /** Called when the activity is first created. */
	   @Override
	   public void onCreate(Bundle savedInstanceState) {
	     super.onCreate(savedInstanceState);
	     setContentView(R.layout.main);
	 
	     // найдем View-элементы
	     tvOut = (TextView) findViewById(R.id.tvOut);
	     btnOk = (Button) findViewById(R.id.btnOk);
	     btnCancel = (Button) findViewById(R.id.btnCancel);
	 
	     // создаем обработчик нажатия
	     OnClickListener oclBtnOk = new OnClickListener() {
	       @Override
	       public void onClick(View v) {
	         // Меняем текст в TextView (tvOut)

	         try {
	             Class.forName("com.mysql.jdbc.Driver");
	             System.out.println("Driver loading success!");
	             //у MySQL обязательно есть системная база,
	             //к ней и будем создавать соединение.
	             String name = "sergo";
	             String password = "19781024";
	             Properties properties = new Properties();
	             properties.setProperty("user", name);
	             properties.setProperty("password", password);
	             properties.setProperty("useUnicode", "true");
	             properties.setProperty("characterEncoding", "UTF-8");

	         
	             try {

	                 Connection con =DriverManager.getConnection("jdbc:mysql://39.134.201.14:3306/my_db", properties);
	                 System.out.println("Connected.");
	                 con.close();
	                 System.out.println("Disconnected.");
	             } catch (SQLException e) {
	                 e.printStackTrace();
	             }
	  
	         } catch (ClassNotFoundException e) {
	             e.printStackTrace();
	         }  
	         
	         
	       }
	     };
	 
	     // присвоим обработчик кнопке OK (btnOk)
	     btnOk.setOnClickListener(oclBtnOk);
	   }
	 }
лог
08-11 11:58:30.370: I/System.out(1679): Driver loading success!
08-11 11:58:30.430: W/System.err(1679): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
08-11 11:58:30.430: W/System.err(1679): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
08-11 11:58:30.430: W/System.err(1679): at java.lang.reflect.Constructor.constructNative(Native Method)
08-11 11:58:30.430: W/System.err(1679): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
08-11 11:58:30.430: W/System.err(1679): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
08-11 11:58:30.430: W/System.err(1679): at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)
08-11 11:58:30.430: W/System.err(1679): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:357)
08-11 11:58:30.440: W/System.err(1679): at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2482)
08-11 11:58:30.440: W/System.err(1679): at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2519)
08-11 11:58:30.440: W/System.err(1679): at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2304)
08-11 11:58:30.440: W/System.err(1679): at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
08-11 11:58:30.440: W/System.err(1679): at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
08-11 11:58:30.440: W/System.err(1679): at java.lang.reflect.Constructor.constructNative(Native Method)
08-11 11:58:30.440: W/System.err(1679): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
08-11 11:58:30.440: W/System.err(1679): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
08-11 11:58:30.450: W/System.err(1679): at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
08-11 11:58:30.450: W/System.err(1679): at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346)
08-11 11:58:30.450: W/System.err(1679): at java.sql.DriverManager.getConnection(DriverManager.java:180)
08-11 11:58:30.450: W/System.err(1679): at com.example.and.MainActivity$1.onClick(MainActivity.java:56)
08-11 11:58:30.450: W/System.err(1679): at android.view.View.performClick(View.java:2485)
08-11 11:58:30.450: W/System.err(1679): at android.view.View$PerformClick.run(View.java:9080)
08-11 11:58:30.450: W/System.err(1679): at android.os.Handler.handleCallback(Handler.java:587)
08-11 11:58:30.450: W/System.err(1679): at android.os.Handler.dispatchMessage(Handler.java:92)
08-11 11:58:30.461: W/System.err(1679): at android.os.Looper.loop(Looper.java:130)
08-11 11:58:30.461: W/System.err(1679): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-11 11:58:30.461: W/System.err(1679): at java.lang.reflect.Method.invokeNative(Native Method)
08-11 11:58:30.461: W/System.err(1679): at java.lang.reflect.Method.invoke(Method.java:507)
08-11 11:58:30.461: W/System.err(1679): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-11 11:58:30.461: W/System.err(1679): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-11 11:58:30.461: W/System.err(1679): at dalvik.system.NativeStart.main(Native Method)
08-11 11:58:30.461: W/System.err(1679): Caused by: java.net.SocketException: Permission denied
08-11 11:58:30.470: W/System.err(1679): at org.apache.harmony.luni.platform.OSNetworkSystem.socket(Native Method)
08-11 11:58:30.470: W/System.err(1679): at dalvik.system.BlockGuard$WrappedNetworkSystem.socket(BlockGuard.java:335)
08-11 11:58:30.470: W/System.err(1679): at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:216)
08-11 11:58:30.470: W/System.err(1679): at java.net.Socket.startupSocket(Socket.java:698)
08-11 11:58:30.470: W/System.err(1679): at java.net.Socket.<init>(Socket.java:263)
08-11 11:58:30.470: W/System.err(1679): at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259)
08-11 11:58:30.480: W/System.err(1679): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:307)
08-11 11:58:30.480: W/System.err(1679): ... 23 more
Последний раз редактировалось mozilalvfg 11 авг 2013, 17:02, всего редактировалось 1 раз.
Из средств, расширяющих сознание, я признаю только книги и немного пива!
____________________________________________________________________
IntelliJ IDEA 12. Win 7 x64 sp1
KSWEB: сервер + PHP + MySQL FREE
Изображение

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 11 авг 2013, 16:53

Привет! а на чем запускаешь - эмулятор, устройство?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 11 авг 2013, 16:56

2. Все эти коннекции нужно делать в отдельном потоке. Так не пойдет.
Читай форум, тему, я уже много раз отвечала, писала по пунктам, и другие тоже.
Другие варианты просто уже переписывать лень.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
mozilalvfg
Сообщения: 85
Зарегистрирован: 10 авг 2013, 18:46

Re: Android и MySQL

Сообщение mozilalvfg » 11 авг 2013, 17:10

Благодарю всех!!! , я докопался. Для таких новичков мне помогло добавить в Build Path проекта, и переменную со ссылкой на jar в [Window -> Preferences -> Java -> Build Path -> Classpath Variables] и всё заработало.

"Foenix" спасибо я обязательно прислушаюсь к Вашей рекомендации, я перепробовал кучу кода и с отдельним потоком и без него, мне не получалось добиться главного что бы был конект.
Но ТЕПЕРЬ ОН У МЕНЯ ЕСТЬ. Пошол пить 100 грам. марафон для меня закончился.
Р.С. Всем спасибо!
Из средств, расширяющих сознание, я признаю только книги и немного пива!
____________________________________________________________________
IntelliJ IDEA 12. Win 7 x64 sp1
KSWEB: сервер + PHP + MySQL FREE
Изображение

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android и MySQL

Сообщение Foenix » 11 авг 2013, 17:16

:-D ну поздравляю, я примерно так же радовалась
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
mozilalvfg
Сообщения: 85
Зарегистрирован: 10 авг 2013, 18:46

Re: Android и MySQL

Сообщение mozilalvfg » 11 авг 2013, 22:48

Добрый вечер, прошу помощи , код выше скомпилировал в APK залил на смартфон Sony Xperia android 4.0.4 , запустил видал при подключении к базе ошибку - проверил на VM все работает.

с телефона база пингуеться.
08-11 22:41:49.864: I/System.out(31073): Driver loading success!
08-11 22:41:49.864: I/System.out(31073): Connected.
08-11 22:41:49.873: D/My Logs(31073): Подключаемся
08-11 22:41:49.913: W/System.err(31073): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
08-11 22:41:49.913: W/System.err(31073): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
08-11 22:41:49.933: W/System.err(31073): at java.lang.reflect.Constructor.constructNative(Native Method)
08-11 22:41:49.933: W/System.err(31073): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:357)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2482)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2519)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2304)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
08-11 22:41:49.933: W/System.err(31073): at java.lang.reflect.Constructor.constructNative(Native Method)
08-11 22:41:49.933: W/System.err(31073): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
08-11 22:41:49.933: W/System.err(31073): at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346)
08-11 22:41:49.933: W/System.err(31073): at java.sql.DriverManager.getConnection(DriverManager.java:175)
08-11 22:41:49.943: W/System.err(31073): at com.example.testprog.MainActivity$1.onClick(MainActivity.java:93)
08-11 22:41:49.943: W/System.err(31073): at android.view.View.performClick(View.java:3534)
08-11 22:41:49.943: W/System.err(31073): at android.view.View$PerformClick.run(View.java:14263)
08-11 22:41:49.943: W/System.err(31073): at android.os.Handler.handleCallback(Handler.java:605)
08-11 22:41:49.943: W/System.err(31073): at android.os.Handler.dispatchMessage(Handler.java:92)
08-11 22:41:49.943: W/System.err(31073): at android.os.Looper.loop(Looper.java:137)
08-11 22:41:49.943: W/System.err(31073): at android.app.ActivityThread.main(ActivityThread.java:4441)
08-11 22:41:49.943: W/System.err(31073): at java.lang.reflect.Method.invokeNative(Native Method)
08-11 22:41:49.943: W/System.err(31073): at java.lang.reflect.Method.invoke(Method.java:511)
08-11 22:41:49.943: W/System.err(31073): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-11 22:41:49.943: W/System.err(31073): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-11 22:41:49.943: W/System.err(31073): at dalvik.system.NativeStart.main(Native Method)
08-11 22:41:49.943: W/System.err(31073): Caused by: java.net.SocketException: android.os.NetworkOnMainThreadException
08-11 22:41:49.943: W/System.err(31073): at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:410)
08-11 22:41:49.943: W/System.err(31073): at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:271)
08-11 22:41:49.943: W/System.err(31073): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:307)
08-11 22:41:49.943: W/System.err(31073): ... 23 more
Из средств, расширяющих сознание, я признаю только книги и немного пива!
____________________________________________________________________
IntelliJ IDEA 12. Win 7 x64 sp1
KSWEB: сервер + PHP + MySQL FREE
Изображение

Аватара пользователя
mozilalvfg
Сообщения: 85
Зарегистрирован: 10 авг 2013, 18:46

Re: Android и MySQL

Сообщение mozilalvfg » 12 авг 2013, 05:10

Посмотрите пожалуйста эту статью http://devcolibri.com/1486 для универсальности и многопользовательского приложения подойдёт?

зделал всё как там описываться (пришлось инсталлировать Android Studio) но результат есть. Всем новичкам рекомендую по вопросу "MySql+Android" смотреть туда.

Уважаемые гуру, Android Studio мне не очень понравилась вот здорово било бы переписать статью для Вашего сайта только на Eclips

присоеденяю проект на Android Studio + все необходимие файли.
Вложения
AndroidAndMySQL.zip
(190.98 КБ) 195 скачиваний
Из средств, расширяющих сознание, я признаю только книги и немного пива!
____________________________________________________________________
IntelliJ IDEA 12. Win 7 x64 sp1
KSWEB: сервер + PHP + MySQL FREE
Изображение

Ответить