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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка "Error opening trace file: No such file or directory (2)" http://www.cyberforum.ru/android-dev/thread1085880.html
пару часов назад прога работала включил комп перестала пишет такую ошибку java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.de/com.example.de.MainActivity}: android.os.NetworkOnMainThreadException я понял смысл ошибки, есть метод какой подключается к серверу вот , если я убераю этот метод всё работает даже если убераю права на пользование Интернет тоже работает но...
Программирование Android Общая картина (XML) Доброго времени суток,форумчане ! Предисловие: недавно начал изучать основу основ - XML(поправте,если я не прав). До этого имел некоторый опыт и знания в следующих областях : c++,php,javascript ( поверхностно всё ). Прошу заранее извинить за некорректность моих действий или т.п.. Порой сталкиваюсь с затруднениями в процессе обучения,это вызвано непониманием,в некоторой степени, общей... http://www.cyberforum.ru/android-dev/thread1085833.html
Автоматическое удаление уведомления в статус баре, после нажатия на него Программирование Android
Создаю уведомление из Activity в onCreate(): NotificationManager notificationManager; notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Uri address = Uri.parse("http://site"); Intent openLink = new Intent(Intent.ACTION_VIEW, address); PendingIntent pIntent = PendingIntent.getActivity(this, 1, openLink, ...
программный вывод Bitmap на экран Программирование Android
главное активити. public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //делаем полноэкранным getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); // без заголовка
Программирование Android Приложение Hello World http://www.cyberforum.ru/android-dev/thread1085493.html
Все Здрасте. Я вот решил начать изучать программирование под Android. И уже с первым же приложением у меня возникли проблемы. Все что нужно я установил и решил создать свое приложения. После создания у меня в коде вылезли такие вот ошибки:
Программирование Android в чем уступает платформа Android любой традиционной десктопной платформе типа Java ? с точки зрения программиста - что трудно делать на андроиде или невозможно? или же андроид покрывает все возможности настольных OS ? подробнее

Показать сообщение отдельно
Stem123
1 / 1 / 0
Регистрация: 14.06.2013
Сообщений: 37
05.02.2014, 12:00  [ТС]     Реализация отправки данных из EditText приложения Android в поле таблицы БД под СУБД Oracle 11g и в поле БД под СУБД MSSQL
Всё же похабрил немного))не отступаю от надежд разработать приложение под 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);
...
}
Это я просто получил данные с БД пока что.
После запускаю на реальном устройстве приложение. Устройсвто находится в одной локалке с БДами.запускаю приложение и должен получить результат.

Сразу скажу я понимаю здесь ошибок крайне много, но если есть уже более опытные в разработки подобного, то прошу укажите где я не так что сделал и как правильно делать нужно?
Заранее благодарен!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru