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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Stem123
1 / 1 / 0
Регистрация: 14.06.2013
Сообщений: 37
#1

Реализация отправки данных из EditText приложения Android в поле таблицы БД под СУБД Oracle 11g и в поле БД под СУБД MSSQL - Программирование Android

31.01.2014, 05:55. Просмотров 1675. Ответов 3
Метки нет (Все метки)

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

Читаю и изучаю мануалы и уроки по разработке ПО под Андройд.
вообщем постоянно крутиться мысль в голове, так как имею дело постоянно с различными БД
и в основном работаю с Oracle и MSSQL
Так вот...изначально хотелось создать приложение, которое при установке ряд значений от пользователя могла каким-то образом заполнить этими данными поля в базах данных Oracle и MSSQL/
Собственно и вопрос каким образом это можно сделать рационально и нагляднее при условии что БД не имеют связь с миром(INTERNET)...всё в локалке автономной....т.е. есть тел под Андройд у которого отключена связь с миром и подцеплен к точке wi-fi к локалке ..или планшетник...

и собственно не вижу, чтобы при разработке приложения было всё так явно как в php к примеру...т.е. на php я просто буру из библиотеки функцию и заполняю её данными для connect'а и далее уже делаю select, update и т.п.
здесь же я такого не вижу....Андройд не имеет библиотеку для работы с этими СУБД?
стал читать в сторону Intent и Intent Filter....опять же в замешательстве...как это будет выглядеть на практике для реализации вышеизоженной цели...

к примеру есть у нас Базы данных:
-Oracle 11g, ipserver 10.10.10.1 mask 255.255.255.0 nameserver ORACLESERVER nameBD LOGSERVERORACLE table AUDITSERVERORACLE passwordBD 12345 user STEM1 charset utf8
-создан tnsnames.ora
-MS SQL 2005, ipserver 10.10.10.2 mask 255.255.255.0 nameserver MSSQL2005SERVER nameBD LOGSERVERMSSQL2005 table AUDITSERVERMSSQL2005 passwordBD 67890 user STEM2 charset utf8


погуглил и собственно я не вижу, чтобы были прямые функции для работы с этими БД..верно или я ошибаюсь? если через Intent или Intent Filter то мне необходимо установить в системе Андройд два клиента для MSSQL и Oracle-это я думаю проблем не возникнет..но как использовать прозрачно для пользователя ресурсы клиентов?так чтобы пользователь нажав на кнопку смог в разработанном приложении отправить поле1 для ввода текста допустим в поле БД Oracle , а поле2 для ввода текста допустим в поле БД Oracle и соответственно получить всплывающее сообщение, что данные отправлены.? не могу разобраться..если кто сталкивался с подобным-просьба указать для наглядности как это реализовывается?
Заранее благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 05:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация отправки данных из EditText приложения Android в поле таблицы БД под СУБД Oracle 11g и в поле БД под СУБД MSSQL (Программирование Android):

СУБД под Android - Программирование Android
Доброе время суток. Такая ситуация, надо написать приложение под Android, а точнее БД. Должна быть клиент-сервер. 1) Редактировать...

Выбор субд( MS SQL 2008 || Oracle 11g) - SQL Server
Доброго времени суток! Не могли бы вы помочь с выбором субд? Мне необходимо предоставить результаты сравнения этих двух БД (задание...

В СУБД Oracle 11g обнаружена критически опасная уязвимость - Oracle
В рамках проходящей в США технической конференции Black Hat ИТ-эксперты компании NGS Consulting сообщили о наличии критически опасной...

Вывод таблицы с подстановкой данных под поле ID - Delphi БД
Добрый день) Ребята, подскажите, пожалуйста, как реализовать такую задачу... есть 2 таблицы: 1-я "оборуд" содержит "ID","nazv" 2-я...

СУБД Oracle vs СУБД SAP HANA - Oracle
Коллеги, в России появилась новая СУБД, которая создавалась компанией SAP AG с целью замены СУБД, используемых в SAP ERP проектах на...

СУБД под Novell - Базы данных
Доброе время суток. Не подскажете, какую СУБД (из современных, нужна поддрежка многопользовательского режима) можно поставить на...

3
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
31.01.2014, 09:55 #2
Цитата Сообщение от Stem123 Посмотреть сообщение
Андройд не имеет библиотеку для работы с этими СУБД?
Не имеет, придётся поискать готовую или написать свою.
0
Stem123
1 / 1 / 0
Регистрация: 14.06.2013
Сообщений: 37
03.02.2014, 03:57  [ТС] #3
А кто-нибудь готовые функции уже встречал?
0
Stem123
1 / 1 / 0
Регистрация: 14.06.2013
Сообщений: 37
05.02.2014, 12:00  [ТС] #4
Всё же похабрил немного))не отступаю от надежд разработать приложение под Android и поработаь со своими БДами
Наткнулся на интересную статейку как заставить приложение на Android работать с СУБД MS SQL
вот ссылка
http://habrahabr.ru/post/206790/

Вот хотел бы это реализовать хотя бы к примитивной БД MSSQL в моём случае...

Так как я начинающий в программировании под Android хотел бы посоветоваться...

судя из статьи, естественно узкое место становится безопасность-логин и пароль от БД...конечно можно в БД создать пользователя-readonly роль на нужные таблицы..но опять же пользователю нужно втставлять данные в таблицы...

Итак...
создаю приложение

Project name: P1_MSSQL
Build Target: Android 2.3.3
Application name: WorkBDMSSQL
Package name: ru.chita.develop.p1intentfilter
Create Activity: MainActivity

Откроем main.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/linearLayout1" 
android:layout_marginLeft="10pt" 
android:layout_marginRight="10pt" 
android:layout_marginTop="3pt"> 
<EditText 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_marginLeft="5pt" 
android:id="@+id/etDATE1" 
android:layout_width="match_parent" 
android:inputType="numberDecimal"> 
</EditText> 
</LinearLayout> 
<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/linearLayout2" 
android:layout_marginTop="3pt" 
android:layout_marginLeft="5pt" 
android:layout_marginRight="5pt"> 
<Button 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_weight="1" 
android:text="+" 
android:textSize="8pt" 
android:id="@+id/btnConMSSQL"> 
</Button> 
</LinearLayout> 
<TextView 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_marginLeft="5pt" 
android:layout_marginRight="5pt" 
android:textSize="12pt" 
android:layout_marginTop="3pt" 
android:id="@+id/tvResult" 
android:gravity="center_horizontal"> 
</TextView> 
</LinearLayout>
Один EditText-для написания данных, которые по нажатию кнопки добавятся в нужное поле нужной таблицы в БД MSSQL2005SERVER
Одна Кнопка Button, которая по нажатию если есть данные в EditText добавляет данные в БД и показывает данные из БД, а если нет то просто показывает данные из БД


Итак...из статьи
...
В Java (и Android соответственно) соединение с удалёнными БД происходит при помощи JDBC-драйверов.
...
В моём конкретном случае сервер майкрософтовский, и для него существует два драйвера: от Microsoft и открытая альтернатива JTDS.
У меня также

Сразу возникает вопрос драйвер JTDS должен установлен в системе Android, где должно работать разрабатываемое приложение WorkBDMSSQL?или я что-то не так понял?..Если всё же драйвер в системе...где его можно найти и как называется?


Итак допустим этот шаг мы сделали...
идём далее по статье
На SQL-сервере должна быть настроена работа через TCP/IP.
Иду на сервер свой SQL SERVER 2005 и настраиваю включение сетевого протокола TCP/IP на данном MSSQL2005SERVER

Далее...
Хочу просто получить данные с SQL сервера

Судя по статье данные запросов драйвер JTDS должен возвращает в интерфейсе ResultSet.
Весь обмен данными, как потенциально продолжительную операцию, будем делать асинхронно.
Теперь в статье написано, что можно написать класс для запросов к MS SQL и назван этот класс AsyncRequest

С учётом моих данных для соединения с моей БД на сервере MSSQL2005SERVER класс AsyncRequest по идее должен выглядеть сл образом:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public final class AsyncRequest extends AsyncTask<String, Void, JSONArray> {
 final static String MSSQL_DB = "jdbc:jtds:sqlserver://10.10.10.2:57333:/ LOGSERVERMSSQL2005;"
 final static String MSSQL_LOGIN = "STEM2";
 final static String MSSQL_PASS= "67890";
 
 @Override
 protected JSONArray doInBackground(String... query) {
   JSONArray resultSet = new JSONArray();
   try {
     Class.forName("net.sourceforge.jtds.jdbc.Driver");
     Connection con = null;
     Statement st = null;
     ResultSet rs = null;
     try {
       con = DriverManager.getConnection(MSSQL_DB, MSSQL_LOGIN, MSSQL_PASS);
       if (con != null) {
         st = con.createStatement();
         rs = st.executeQuery(query[0]);
         if (rs != null) {
           int columnCount = rs.getMetaData().getColumnCount();
           // Сохранение данных в JSONArray
           while (rs.next()) {
             JSONObject rowObject = new JSONObject();
             for (int i = 1; i <= columnCount; i++) {
               rowObject.put(rs.getMetaData().getColumnName(i), (rs.getString(i) != null) ? rs.getString(i) : "");
             }
             resultSet.put(rowObject);
           }
         }
       }
     } catch (SQLException e) {
       e.printStackTrace();
     } catch (JSONException e) {
       e.printStackTrace();
     } finally {
       try {
         if (rs != null) rs.close();
         if (st != null) st.close();
         if (con != null) con.close();
       } catch (SQLException e) {
         throw new RuntimeException(e.getMessage());
       }
     }
   } catch (ClassNotFoundException e) {
     e.printStackTrace();
   }
   return resultSet;
 }
 
 @Override
 protected void onPostExecute(JSONArray result) {
    // TODO: вернуть результат
 }
}
Сразу возникает ряд вопросов-мне просто не понятны некоторые моменты...
1) это класс и вышеуказанный код я должен прописать в MainActivity.java?Каким образом, если да?Т.е. внутри public class MainActivity extends Activity implements OnClickListener или за его пределами(после)?
2)Итак есть класс и как я его теперь могу использовать при разработке своего приложения?
Я правильно понимаю, что я в приложении могу ввести переменную допустим SELMSSQL класса AsyncRequest

Т.е. в MainActivity.java я должен прописать после
Java
1
public class MainActivity extends Activity implements OnClickListener {
Java
1
2
3
 AsyncRequest SELMSSQL;
 
....
И в MainActivity.java использовать уже данную переменную для select'a
Java
1
2
3
4
....
SELMSSQL.st = "select * from table1";
SELMSSQL.resultSet;
...
Теперь переменная SELMSSQL хранит все данные из таблицы table1 БД MSSQL2005SERVER
верно? или я ошибаюсь?Если ошибаюсь-прошу укажите где и в чм ошибся и как исправить?

А далее пишу обработчик для кнопки как в уроках startandroid.com и вывожу по нажатию OnClick значение переменной SELMSSQL.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class MainActivity extends Activity implements OnClickListener{
TextView etDATE1;
....
 
 
// найдем View-элементы
 
btnConMSSQL = (Button) findViewById(R.id.btnConMSSQL);
tvOut =  (TextView) findViewById(R.id.etDATE1);
 
//Пишем обработчик для этой кнопки
OnClickListener oclBtn = new OnClickListener() {
       @Override
       public void onClick(View v) {
         // TODO Auto-generated method stub
        tvOut.setText(SELMSSQL);
       }
     }
//Скармливаем обработчик кнопке
btnConMSSQL.setOnClickListener(oclBtn);
...
}
Это я просто получил данные с БД пока что.
После запускаю на реальном устройстве приложение. Устройсвто находится в одной локалке с БДами.запускаю приложение и должен получить результат.

Сразу скажу я понимаю здесь ошибок крайне много, но если есть уже более опытные в разработки подобного, то прошу укажите где я не так что сделал и как правильно делать нужно?
Заранее благодарен!
0
05.02.2014, 12:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2014, 12:00
Привет! Вот еще темы с ответами:

подскажите СУБД под MAC OS - Mac OS
Скачал с виндовой машины базу данных телефонных номеров города. В папке лежат файлы с расширением tad и dat. В винде эту базу открывали...

Как установить Oracle 11g под XP? - Oracle
Помогите, плиз!!! В процессе установки вылетает ошибка: oraconfig.exe не удалось найти компонет oci.dll. Потом еще всякие... ...

Вход в oracle 11g xe под новым пользователем - Oracle
Здравствуйте. Вобщем проблема в следующем. Установил я на win 7, oracle 11g xe. Попробовал зайти используя веб оболочку под system, всё...

Работа с базами данных на примере СУБД Oracle 10 G - Visual Basic .NET
Работа с базами данных на примере СУБД Oracle 10 G


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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