Android и MySQL

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Android и MySQL

Сообщение rezak90 » 19 апр 2013, 08:32

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 10:32

И так...
Попытался выделись подключение в поток, что бы не ковыряться с локальными сетями и прочим, создал базу на ht-system, пытаюсь подключиться.
Код такой:
[syntax=java]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;
}
}
}
[/syntax]

При нажатии на кнопку приложение вылетает из-за фатальной ошибки...

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Android и MySQL

Сообщение neoksi » 19 апр 2013, 11:44

Лог ошибки в студию)

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 13:19

rezak90 писал(а):
Я так понимаю,что при описываемом тобой способе мне бы пришлось еще на стороне сервера что-то делать, а мне бы этого точно не дали.
Да, пришлось бы на серваке сервис запилить, но это не долго, и если сама не смогла бы то можно ж нанять человечка.
:-D
ну сам подумай что ты пишешь, и это - проще? т.е. мне нужно мои деньги поделить еще с кем-то, причем ты просто поверить не хочетешь, что сейчас и так все распрекрасно работает, уверяю и будет работать, нанять кого-то никогда не поздно.
Мои программы, которые я еще на Delphi 1 писала, до сих пор работают и люди ими пользуются постоянно, к моему удивлению. У меня карма такая :-D
R.id.team

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 13:28

Вот такой вот лог...
04-19 10:27:14.521: D/My Logs(333): Запускаем поток
04-19 10:27:14.541: W/System.err(333): Подключаемся
04-19 10:27:15.621: W/dalvikvm(333): VFY: unable to find class referenced in signature (Ljavax/naming/Reference;)
04-19 10:27:15.621: I/dalvikvm(333): Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom
04-19 10:27:15.621: W/dalvikvm(333): VFY: unable to resolve virtual method 11698: Ljavax/naming/Reference;.get (Ljava/lang/String;)Ljavax/naming/RefAddr;
04-19 10:27:15.631: D/dalvikvm(333): VFY: replacing opcode 0x6e at 0x0004
04-19 10:27:15.631: D/dalvikvm(333): VFY: dead code 0x0007-0013 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.initializeFrom (Ljavax/naming/Reference;)V
04-19 10:27:15.661: W/dalvikvm(333): VFY: unable to find class referenced in signature (Ljavax/naming/Reference;)
04-19 10:27:15.661: E/dalvikvm(333): Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
04-19 10:27:15.661: W/dalvikvm(333): VFY: unable to resolve new-instance 982 (Ljavax/naming/StringRefAddr;) in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;
04-19 10:27:15.661: D/dalvikvm(333): VFY: replacing opcode 0x22 at 0x0006
04-19 10:27:15.661: D/dalvikvm(333): VFY: dead code 0x0008-0019 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.storeTo (Ljavax/naming/Reference;)V
04-19 10:27:15.721: D/dalvikvm(333): GC_CONCURRENT freed 268K, 50% free 2967K/5831K, external 731K/1038K, paused 6ms+5ms
04-19 10:27:15.971: I/dalvikvm(333): Could not find method java.lang.management.ManagementFactory.getThreadMXBean, referenced from method com.mysql.jdbc.MysqlIO.appendDeadlockStatusInformation
04-19 10:27:15.971: W/dalvikvm(333): VFY: unable to resolve static method 11037: Ljava/lang/management/ManagementFactory;.getThreadMXBean ()Ljava/lang/management/ThreadMXBean;
04-19 10:27:15.981: D/dalvikvm(333): VFY: replacing opcode 0x71 at 0x0079
04-19 10:27:15.981: D/dalvikvm(333): VFY: dead code 0x007c-00a9 in Lcom/mysql/jdbc/MysqlIO;.appendDeadlockStatusInformation (Ljava/lang/String;Ljava/lang/StringBuffer;)V
04-19 10:27:15.981: D/dalvikvm(333): VFY: dead code 0x00ea-020a in Lcom/mysql/jdbc/MysqlIO;.appendDeadlockStatusInformation (Ljava/lang/String;Ljava/lang/StringBuffer;)V
04-19 10:27:16.171: W/System.err(333): Не получилось
04-19 10:27:16.171: W/System.err(333): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
04-19 10:27:16.171: W/System.err(333): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
04-19 10:27:16.171: W/System.err(333): at java.lang.reflect.Constructor.constructNative(Native Method)
04-19 10:27:16.171: W/System.err(333): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
04-19 10:27:16.171: W/System.err(333): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-19 10:27:16.171: W/System.err(333): at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)
04-19 10:27:16.171: W/System.err(333): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355)
04-19 10:27:16.171: W/System.err(333): at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2479)
04-19 10:27:16.171: W/System.err(333): at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516)
04-19 10:27:16.181: W/System.err(333): at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301)
04-19 10:27:16.181: W/System.err(333): at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
04-19 10:27:16.181: W/System.err(333): at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
04-19 10:27:16.181: W/System.err(333): at java.lang.reflect.Constructor.constructNative(Native Method)
04-19 10:27:16.181: W/System.err(333): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
04-19 10:27:16.181: W/System.err(333): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-19 10:27:16.181: W/System.err(333): at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
04-19 10:27:16.181: W/System.err(333): at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
04-19 10:27:16.181: W/System.err(333): at java.sql.DriverManager.getConnection(DriverManager.java:180)
04-19 10:27:16.181: W/System.err(333): at java.sql.DriverManager.getConnection(DriverManager.java:214)
04-19 10:27:16.181: W/System.err(333): at ru.test.mysqltest.MainActivity$1.run(MainActivity.java:62)
04-19 10:27:16.181: W/System.err(333): at java.lang.Thread.run(Thread.java:1019)
04-19 10:27:16.181: W/System.err(333): Caused by: java.net.UnknownHostException: mysql-srv29435.ht-systems.ru
04-19 10:27:16.191: W/System.err(333): at java.net.InetAddress.lookupHostByName(InetAddress.java:506)
04-19 10:27:16.191: W/System.err(333): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
04-19 10:27:16.191: W/System.err(333): at java.net.InetAddress.getAllByName(InetAddress.java:256)
04-19 10:27:16.191: W/System.err(333): at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:249)
04-19 10:27:16.191: W/System.err(333): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305)
04-19 10:27:16.191: W/System.err(333): ... 14 more
04-19 10:27:16.191: W/dalvikvm(333): threadid=9: thread exiting with uncaught exception (group=0x40015560)
04-19 10:27:16.211: E/AndroidRuntime(333): FATAL EXCEPTION: Thread-10
04-19 10:27:16.211: E/AndroidRuntime(333): java.lang.NullPointerException
04-19 10:27:16.211: E/AndroidRuntime(333): at ru.test.mysqltest.MainActivity$1.run(MainActivity.java:83)
04-19 10:27:16.211: E/AndroidRuntime(333): at java.lang.Thread.run(Thread.java:1019)

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 13:30

Небольшой оффтопик :)
Olivka писал(а): Мои программы, которые я еще на Delphi 1 писала, до сих пор работают и люди ими пользуются постоянно, к моему удивлению. У меня карма такая :-D
Мои программы, написанные лет так 5-6 назад, то же до сих пор в ходу и постоянно скачиваются :) вот бы от этого ещё мне польза была какая-то, ну ладно хоть спасибо говорят. :)

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 15:45

у тебя опять то же самое
04-19 10:27:16.171: W/System.err(333): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
видимо связи нету
Napalm писал(а):Небольшой оффтопик :)
Olivka писал(а): Мои программы, которые я еще на Delphi 1 писала, до сих пор работают и люди ими пользуются постоянно, к моему удивлению. У меня карма такая :-D
Мои программы, написанные лет так 5-6 назад, то же до сих пор в ходу и постоянно скачиваются :) вот бы от этого ещё мне польза была какая-то, ну ладно хоть спасибо говорят. :)
значит у тебя все получится
у меня пользы тоже нету особо, только приятно, когда встречаешь человека, который говорит "а вот помнишь ты программу писала.. так мы работаем на ней" (хотя я уже может быть и забыла что оно там делает-то))
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 » 19 апр 2013, 15:47

и вот
04-19 10:27:16.181: W/System.err(333): Caused by: java.net.UnknownHostException: mysql-srv29435.ht-systems.ru
R.id.team

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 17:06

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

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 17:46

попробуй еще не самую новую версию драйвера поставить. у меня jtds-1.2.6.jar
я как-то ставила новее по чьей-то просьбе, оно перестало работать.
R.id.team

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 18:24

Буду признателен, если ты мне его скинешь, на mysql.com самая ранняя третья версия

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 18:27

вот.
Вложения
jtds-1.2.6-dist.zip
(523.76 КБ) 215 скачиваний
R.id.team

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 19:53

Премного благодарен, но вновь возвращаюсь к тому, что я, видимо, просто как-то неправильно подключил библиотеку.
Вот кусочек кода и лог его выполнения.
[syntax=java]try {
Log.d("My Logs", "Подключаем драйвер");
Class.forName("com.mysql.jdbc.Driver").newInstance();
Log.d("My Logs", "Подключили");
} catch (InstantiationException e) {
Log.d("My Logs", "не подключили");
e.printStackTrace();
} catch (IllegalAccessException e) {
Log.d("My Logs", "Не подключили, правов маловато");
e.printStackTrace();
} catch (ClassNotFoundException e) {
Log.d("My Logs", "Не подключили класс не найден");
e.printStackTrace();
}[/syntax]
04-19 16:17:48.274: D/My Logs(470): Запускаем поток
04-19 16:17:48.305: D/My Logs(470): Подключаем драйвер
04-19 16:17:48.324: D/My Logs(470): Не подключили класс не найден
Подключал так
import>file system>указал jar файл библиотеки

[syntax=java]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;[/syntax]

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 20:47

э-эх!
Project->Properties->Java Build Path->Libraries->Add External Jar
R.id.team

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 20:58

А, понял, косяк в коннекторе, видимо, в версии 1.2.6 класс называется иначе, подключил последнюю версию, эта ошибка исчезла.
Всё приятно преобразилось...
Код:
[syntax=java]
try {
Log.d("My Logs", "Подключаем драйвер");
Class.forName("com.mysql.jdbc.Driver").newInstance();
Log.d("My Logs", "Подключили");
} catch (InstantiationException e) {
Log.d("My Logs", "не подключили");
e.printStackTrace();
} catch (IllegalAccessException e) {
Log.d("My Logs", "Не подключили, правов маловато");
e.printStackTrace();
} catch (ClassNotFoundException e) {
Log.d("My Logs", "Не подключили класс не найден");
e.printStackTrace();
}
try {
Log.d("My Logs", "Подключаемся");
conn = DriverManager.getConnection(url, userName, password);
Log.d("MyLog", "Подключилось");
Statement s = null;
s = conn.createStatement();
Log.d("MyLog", "Отправляем запрос");
s.executeQuery("Select from users");
Log.d("MyLog", "Отправили");
ResultSet rs = null;
Log.d("MyLog", "Получаем ответ");
rs = s.getResultSet();
Log.d("MyLog", "Получили");
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) {
Log.d("My Logs", "Не получилось");
e.printStackTrace();
}[/syntax]

И лог:
04-19 17:45:08.264: D/My Logs(372): Подключаем драйвер
04-19 17:45:08.344: D/My Logs(372): Подключили
04-19 17:45:08.344: D/My Logs(372): Подключаемся
04-19 17:45:15.196: D/MyLog(372): Подключилось
04-19 17:45:15.196: D/MyLog(372): Отправляем запрос
04-19 17:45:15.317: D/My Logs(372): Не получилось
Мы уже пробились до сервера,
хотелось бы понять, почему не получается отправить запрос на сервер

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 21:01

:twisted: лог. весь.
R.id.team

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

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

Re: Android и MySQL

Сообщение Napalm » 19 апр 2013, 21:10

Всё, я его победил!

Я просто криворучка, в запросе вместо SELECT * FROM написал SELECT FROM, вот и вся беда.

Получил информацию, вывел её в логи. Теперь надо дальше разрабатывать идею.

Огромное спасибо за помощь!
Последний раз редактировалось Napalm 20 апр 2013, 10:34, всего редактировалось 1 раз.

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

Re: Android и MySQL

Сообщение Foenix » 19 апр 2013, 21:56

ну, поздравляю)
R.id.team

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

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Android и MySQL

Сообщение neoksi » 19 апр 2013, 22:37

Я же говорил, она профи в этом вопросе :)

phenomenon
Сообщения: 22
Зарегистрирован: 17 апр 2013, 17:59

Re: Android и MySQL

Сообщение phenomenon » 19 июн 2013, 19:06

на эту тему есть курс http://www.specialist.ru/course/dzhv2-a 4 урок, есть на торрентах. все подробно разбирается

Ответить