Подключение к OracleDB через приложение Android - PullRequest
1 голос
/ 20 апреля 2011

Спасибо за поиск, надеюсь, вы мне поможете.

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

http://pastebin.archlinux.fr/432118

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

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

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

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

РЕДАКТИРОВАТЬ: приложению нужно будет получать данные из OracleDB и сохранять их в локальной базе данных SQLite Android, поскольку устройство Android будет отключено отлокальная сеть (и я не хочу, чтобы данные были доступны из Интернета [3G]).После отключения приложение будет работать с локальными данными на SQLite.Когда действие пользователя будет завершено, устройство будет повторно подключено к локальной сети, и приложение синхронизирует отредактированные локальные данные SQLite с основным сервером БД Oracle.SQLite <- local -> App <- при подключении / синхронизации ---> OracleDB

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

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

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

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

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

С уважением

Эрик, Oracle PM

1 голос
/ 26 апреля 2011

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

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

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

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

Спасибо всем, С уважением,

Eriatolc

0 голосов
/ 08 февраля 2017

Подключение базы данных 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 / терминал, сделав любую простую программу на Java http://www.javatpoint.com/example-to-connect-to-the-oracle-database

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...