Подключение к OracleDB через приложение Android

1

Thans for looking, надеюсь, вы могли бы мне помочь.

В настоящее время я хочу получить некоторые данные с сервера OracleDB (в локальной сети) из своего приложения для Android. Я использую JDBC с ojdbc14.jar и следующий код в своем приложении для Android, а у stackTrace у меня есть logcat:

http://pastebin.archlinux.fr/432118

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

Кто-то уже успел подключиться к OracleDB со своим Android-приложением и без веб-сервисов? Может ли кто-нибудь помочь мне исправить это исключение?

Информация: я попытался изменить драйвер ojdbc (самое худшее, что я когда-либо делал > . > ), и я проверил правильность URL-адреса.

Спасибо за помощь...

EDIT: приложение должно будет получить данные из OracleDB и сохранить его в локальной базе данных SQLite Android, поскольку устройство Android будет отключено от локальной сети (и я не хочу, чтобы данные были доступны из сеть [3G]). После отключения приложение будет работать с локальными данными SQLite. Когда действие пользователя будет завершено, устройство будет подключено к локальной сети, и приложение синхронизирует отредактированные локальные данные SQLite с основным сервером Oracle DB. SQLite < - local → App < - при подключении/синхронизации --- > OracleDB

  • 0
    Stacktrace at Pastebin больше не доступен - пожалуйста, не используйте внешние сервисы - включите все в свой вопрос.
Теги:
jdbc

3 ответа

3
Лучший ответ

На самом деле у Oracle есть продукт, специально предназначенный для синхронизации базы данных Oracle с мобильными устройствами. Он называется мобильным сервером.

Однако модель использования немного отличается от того, что вы описываете; вместо прямого подключения к базе данных Oracle, вы должны использовать локальную базу данных Berkeley DB или SQLite, а затем мобильный сервер будет синхронизировать ее с базой данных Oracle.

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

Вы можете загрузить его со вкладки загрузки и попробовать.

Удачи вам в решении вашей проблемы.

Привет

Эрик, Oracle PM

  • 0
    Я попробую это. Спасибо за ответ. Я подробно опишу свой ответ, потому что я хочу сделать то, что ваш продукт делает с моим приложением :) Может ли ваш продукт быть в приложении, или он должен быть вне приложения Android, устанавливаться отдельно покупателем?
  • 1
    Все это можно установить сразу. Вы можете узнать больше об этом здесь: bit.ly/dNmSKK Вы хотите «Руководство по мобильному клиенту SQLite», гл. 4 об Android
Показать ещё 2 комментария
1

Я нашел ответ! Решение Oracle Database Lite является решением. Я объясняю...

Oracle Database Lite - большой продукт с нечитаемой документацией. Невозможно понять, как это работает. Но я попытался установить его. И в папках установки есть папка jdbc.

Там вы найдете файл ojdbc14.jar. Используйте его в своем проекте вместо ojdbc14.jar, найденного на классической веб-странице Oracle. И это работает!

Вы сможете подключить Oracle DB через приложение Android, используя JDBC.

Спасибо всем, С наилучшими пожеланиями,

Eriatolc

  • 0
    Я бы не рекомендовал подключаться напрямую к базе данных Oracle с телефона Android с помощью jdbc
  • 0
    Здравствуй. Спасибо за ответы. Вы не единственный, кто предупреждает меня об этом. Но, повторяю, среда, в которой будет использоваться это приложение, очень специфична. И это лучшее решение. Кроме того, сетевая архитектура безопасна для этого, БД Oracle не подключена к Интернету, только в локальной сети, и подключение в локальной сети очень ограничено. Спасибо за помощь.
Показать ещё 2 комментария
0

ПОДКЛЮЧЕНИЕ БАЗА ДАННЫХ ORACLE с ANDROID ЧЕРЕЗ LAN

Предоставление некоторых разрешений манифеста

<permission
        android:name="info.android.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="info.android.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

Класс MainActivity

    package example.com.myapplication;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import android.os.StrictMode;

    public class MainActivity extends AppCompatActivity {

    private static final String DEFAULT_DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String DEFAULT_URL = "jdbc:oracle:thin:@192.168.0.1:1521:xe";
    private static final String DEFAULT_USERNAME = "system";
    private static final String DEFAULT_PASSWORD = "oracle";

    private Connection connection;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        TextView tv = (TextView) findViewById(R.id.hello);


                try {
                    this.connection = createConnection();
                    e.Log("Connected");
                    Statement stmt=connection.createStatement();

                    ResultSet rs=stmt.executeQuery("select * from cat");
                    while(rs.next()) {
                        System.out.println("hello : " + rs.getString(1));
                    }
                    connection.close();
                }
                catch (Exception e) {
                    e.Log(""+e);
                    e.printStackTrace();
                }
            }

            public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException {

                Class.forName(driver);
                return DriverManager.getConnection(url, username, password);
            }

            public static Connection createConnection() throws ClassNotFoundException, SQLException {
                return createConnection(DEFAULT_DRIVER, DEFAULT_URL, DEFAULT_USERNAME, DEFAULT_PASSWORD);
            }
        }

Предпосылки: Обратите внимание: нет необходимости добавлять зависимостей lib ojdbc14.jar, просто скопируйте файл ojdbc14.jar в JAVA_HOME jre → lib → ext и вставьте здесь ojdbc14.jar затем сначала вручную проверьте соединение jdbc с помощью cmd/terminal сделать любую простую java-программу http://www.javatpoint.com/example-to-connect-to-the-oracle-database

Ещё вопросы

Сообщество Overcoder
Наверх
Меню