Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.63
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
#1

Работа с MySQL - Android

14.04.2013, 20:00. Просмотров 3765. Ответов 35
Метки нет (Все метки)

Доброго всем времени суток!

На мобильные системы не программировал никогда.
Есть большой опыт программирования на Delphi и С++, но сейчас возникла необходимость написать программу пом смартфон. Смысл программки достаточно прост, нужно просто обратиться к удалённому MySQL серверу, получить с него данные и отобразить. В качестве среды разработки буду использовать SDK гугловкий.

Прошу подсказать либо литературу по этому вопросу, либо может кусочек кода, что бы было понятно, куда вообще нужно копать.

Заранее благодарю за любой совет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
18.04.2013, 22:29     Работа с MySQL #21
NapalmRain, ты в проекте который тестируешь в манифесте прописал права на интернет?
Просто у меня сейчас кроме UnknownHostException больше нечего вот и хотел проверить.
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
18.04.2013, 22:38  [ТС]     Работа с MySQL #22
c4sp3r, можно немного поподробнее про манифест? Я в этом, мягко говоря, плохо понимаю.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
18.04.2013, 22:42     Работа с MySQL #23
NapalmRain, у тебя в корне проекта есть AndroidManifest.xml добавь туда права на интернет:

XML
1
<uses-permission android:name="android.permission.INTERNET"/>
пример:

AndroidManifest.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.example.rainsystem"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />
    
    <uses-permission android:name="android.permission.INTERNET"/>
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="ru.example.rainsystem.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>


и попробуй не забудь только указать логин и пароль а также хост в MainActivity.java.
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
18.04.2013, 23:05  [ТС]     Работа с MySQL #24
Добавил в манифест доступ к интернету, ситуация, увы, не изменилась.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
18.04.2013, 23:10     Работа с MySQL #25
NapalmRain, в логах тоже самое?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.04.2013, 23:11     Работа с MySQL #26
Логи нужно смотреть в вкладке LogCat если что.
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
18.04.2013, 23:55  [ТС]     Работа с MySQL #27
V0v1k, да, я знаю.
Да, там тоже самое. тот же набор системных ошибок.
log
04-18 19:54:09.895: W/dalvikvm(329): VFY: unable to find class referenced in signature (Ljavax/naming/Reference
04-18 19:54:09.895: I/dalvikvm(329): Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom
04-18 19:54:09.905: W/dalvikvm(329): VFY: unable to resolve virtual method 11693: Ljavax/naming/Reference;.get (Ljava/lang/StringLjavax/naming/RefAddr;
04-18 19:54:09.905: D/dalvikvm(329): VFY: replacing opcode 0x6e at 0x0004
04-18 19:54:09.956: D/dalvikvm(329): VFY: dead code 0x0007-0013 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.initializeFrom (Ljavax/naming/ReferenceV
04-18 19:54:09.956: W/dalvikvm(329): VFY: unable to find class referenced in signature (Ljavax/naming/Reference
04-18 19:54:09.975: E/dalvikvm(329): Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
04-18 19:54:09.975: W/dalvikvm(329): VFY: unable to resolve new-instance 982 (Ljavax/naming/StringRefAddr in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;
04-18 19:54:09.975: D/dalvikvm(329): VFY: replacing opcode 0x22 at 0x0006
04-18 19:54:09.975: D/dalvikvm(329): VFY: dead code 0x0008-0019 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.storeTo (Ljavax/naming/ReferenceV
04-18 19:54:10.135: D/dalvikvm(329): GC_CONCURRENT freed 275K, 50% free 2960K/5831K, external 731K/1038K, paused 11ms+9ms
04-18 19:54:10.895: I/dalvikvm(329): Could not find method java.lang.management.ManagementFactory.getThreadMXBean, referenced from method com.mysql.jdbc.MysqlIO.appendDeadlockStatusInformation
04-18 19:54:10.895: W/dalvikvm(329): VFY: unable to resolve static method 11033: Ljava/lang/management/ManagementFactory;.getThreadMXBean ()Ljava/lang/management/ThreadMXBean;
04-18 19:54:10.895: D/dalvikvm(329): VFY: replacing opcode 0x71 at 0x0079
04-18 19:54:10.895: D/dalvikvm(329): VFY: dead code 0x007c-00a9 in Lcom/mysql/jdbc/MysqlIO;.appendDeadlockStatusInformation (Ljava/lang/String;Ljava/lang/StringBufferV
04-18 19:54:10.916: D/dalvikvm(329): VFY: dead code 0x00ea-020a in Lcom/mysql/jdbc/MysqlIO;.appendDeadlockStatusInformation (Ljava/lang/String;Ljava/lang/StringBufferV
04-18 19:54:11.405: W/System.err(329): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
04-18 19:54:11.405: W/System.err(329): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
04-18 19:54:11.414: W/System.err(329): at java.lang.reflect.Constructor.constructNative(Native Method)
04-18 19:54:11.425: W/System.err(329): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
04-18 19:54:11.465: W/System.err(329): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-18 19:54:11.465: W/System.err(329): at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)
04-18 19:54:11.465: W/System.err(329): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355)
04-18 19:54:11.465: W/System.err(329): at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2479)
04-18 19:54:11.465: W/System.err(329): at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516)
04-18 19:54:11.475: W/System.err(329): at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301)
04-18 19:54:11.475: W/System.err(329): at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
04-18 19:54:11.475: W/System.err(329): at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
04-18 19:54:11.475: W/System.err(329): at java.lang.reflect.Constructor.constructNative(Native Method)
04-18 19:54:11.475: W/System.err(329): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
04-18 19:54:11.485: W/System.err(329): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-18 19:54:11.485: W/System.err(329): at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
04-18 19:54:11.485: W/System.err(329): at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
04-18 19:54:11.485: W/System.err(329): at java.sql.DriverManager.getConnection(DriverManager.java:180)
04-18 19:54:11.494: W/System.err(329): at java.sql.DriverManager.getConnection(DriverManager.java:214)
04-18 19:54:11.504: W/System.err(329): at ru.example.rainsystem.MainActivity.mylogin(MainActivity.java:58)
04-18 19:54:11.504: W/System.err(329): at ru.example.rainsystem.MainActivity.onClick(MainActivity.java:42)
04-18 19:54:11.504: W/System.err(329): at android.view.View.performClick(View.java:2485)
04-18 19:54:11.504: W/System.err(329): at android.view.View$PerformClick.run(View.java:9080)
04-18 19:54:11.515: W/System.err(329): at android.os.Handler.handleCallback(Handler.java:587)
04-18 19:54:11.525: W/System.err(329): at android.os.Handler.dispatchMessage(Handler.java:92)
04-18 19:54:11.525: W/System.err(329): at android.os.Looper.loop(Looper.java:123)
04-18 19:54:11.525: W/System.err(329): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-18 19:54:11.525: W/System.err(329): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 19:54:11.525: W/System.err(329): at java.lang.reflect.Method.invoke(Method.java:507)
04-18 19:54:11.525: W/System.err(329): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-18 19:54:11.535: W/System.err(329): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-18 19:54:11.535: W/System.err(329): at dalvik.system.NativeStart.main(Native Method)
04-18 19:54:11.545: W/System.err(329): Caused by: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
04-18 19:54:11.575: W/System.err(329): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)
04-18 19:54:11.575: W/System.err(329): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
04-18 19:54:11.575: W/System.err(329): at java.net.Socket.startupSocket(Socket.java:705)
04-18 19:54:11.585: W/System.err(329): at java.net.Socket.<init>(Socket.java:263)
04-18 19:54:11.595: W/System.err(329): at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259)
04-18 19:54:11.615: W/System.err(329): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305)
04-18 19:54:11.615: W/System.err(329): ... 25 more
04-18 19:54:11.935: D/dalvikvm(329): GC_CONCURRENT freed 215K, 48% free 3155K/6023K, external 731K/1038K, paused 6ms+17ms
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.04.2013, 00:26     Работа с MySQL #28
Цитата Сообщение от NapalmRain Посмотреть сообщение
Caused by: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
сервер отклонил конекшен.
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
19.04.2013, 20:58  [ТС]     Работа с MySQL #29
Возвращаюсь к вопросу о том, что я что-то не правильно подключаю...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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();
}
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 файл библиотеки
Java
1
2
3
4
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.04.2013, 21:10     Работа с MySQL #30
Цитата Сообщение от c4sp3r Посмотреть сообщение
тебе нужно просто скопировать его в папку libs
...

Добавлено через 3 минуты
в том проекте, что вы выкладывали, не было такой проблемы.
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
19.04.2013, 22:00  [ТС]     Работа с MySQL #31
А, понял, косяк в коннекторе, видимо, Ставил другую версию, а в ней класс называется иначе, подключил последнюю версию, эта ошибка исчезла.
Всё приятно преобразилось...
Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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();
}
И лог:
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): Не получилось
Мы уже пробились до сервера,
хотелось бы понять, почему не получается отправить запрос на сервер
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.04.2013, 22:07     Работа с MySQL #32
а какой екзепшен?
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
19.04.2013, 22:11  [ТС]     Работа с MySQL #33
Всё, я его победил!

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

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

Огромное всем спасибо за помощь!
Zevill
Сообщений: n/a
24.04.2013, 18:14     Работа с MySQL #34
Если не жалко, выложи получившийся проект.
Или скинь на мыло evil070@mail.ru
Буду очень признателен!
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
25.04.2013, 15:35  [ТС]     Работа с MySQL #35
Zevill, хорошо. Постараюсь выложить сегодня-завтра
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 09:44     Работа с MySQL
Еще ссылки по теме:

Android Не подключается к Mysql
Android подключение к mysql! Android
Обращение к MySQL Android
MySQL и Андроид Android
Android Не происходит подключение к MySQL

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 628
06.05.2013, 09:44  [ТС]     Работа с MySQL #36
Вот мой тестовый проект, если кому пригодится
http://yadi.sk/d/-OL7nnqU4a2em
Yandex
Объявления
06.05.2013, 09:44     Работа с MySQL
Ответ Создать тему
Опции темы

Текущее время: 05:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru