- Android jdbc драйвер через http
- Android. Работаем с MS SQL без посредников
- Каков наилучший способ подключения базы данных android и oracle?
- Работа с базами данных с помощью JDBC драйвера
- Что такое JDBC?
- Зачем нужен JDBC?
- Шаг 1.
- Шаг 2.
- Шаг 3. Создание таблиц в БД.
- Шаг 4. Добавление новой записи в БД.
- Шаг 5. Получение данных с БД.
- Шаг 6. Удаление данных с БД.
- Шаг 7. Обновление данных в БД.
- Выводы.
- ПОХОЖИЕ ПУБЛИКАЦИИ
- 29 комментариев к статье «Работа с базами данных с помощью JDBC драйвера»
Android jdbc драйвер через http
The JDBC API is an alternative to the drop-in replacement. It is possible to build Berkeley DB SQL for Android in such a way that a JDBC API is exposed to Android application developers. This is done using the Android NDK.
This section describes how to build and use the BDB JDBC driver for Android. Note that the BDB JDBC driver cannot currently be built on a Windows platform.
Download and install the Android SDK. The installation instructions can be found here:
Download and install the Android NDK. It can be found here:
Build the BDB JDBC libraries.
If you do not already have it, download the Berkeley DB package from here:
Note that you must be using a 5.3.x or higher version of the product in order for these instructions to work. Once you have the package, unpack it:
Where x.y.z the major, minor, and point release version of the Berkeley DB distribution which you are using.
Also, note that in the following instructions, the directory denoted by db-x.y.z , above, is referred to as .
Build an x86/x64 JDBC package. This is required because the building process will generate target files which are required to build Android NDK. Also, the built JAR file can be imported by eclipse, which will then convert it to the Android Dalvik JAR format.
To do this, edit /lang/sql/jdbc/SQLit/Database.java and replace all instances of System.loadLibrary(«sqlite_jni») with System.loadLibrary(«oracle-jdbc») .
Once you have done this, configure and make the library. The following example shows the minimum configuration options that you need to use in order to configure the Berkeley DB JDBC driver. For your particular installation, other configuration options might be interesting to you. See Configuring Berkeley DB and Android Configuration Options for more information.
Enable encryption if required.
By default, encryption is disabled. To enable it, edit /build_android/jdbc/jni/Android.mk and change BDB_ENABLE_ENCRYPTION from false to true .
After enabling encryption, use pragma key to set the password. You must do this before performing any database operations. For example:
Enable user authentication if required.
By default, user authentication is disabled. To enable it, edit /build_android/jdbc/jni/Android.mk and change BDB_ENABLE_USERAUTH from false to true. BDB encryption must also be enabled.
For more information, see the «User Authentication» section in Berkeley DB Getting Started with the SQL APIs.
Enable key-store based user authentication if required.
By default, key-store based user authentication is disabled. To enable it, edit /build_android/jdbc/jni/Android.mk and change BDB_ENABLE_USERAUTH_KEYSTORE from false to true. BDB encryption must also be enabled.
For more information, see «Key-store Based User Authentication» section in the Berkeley DB Getting Started with the SQL APIs.
Build the Android NDK:
This results in the following required files:
/build_android/jdbc/libs//liboracle-jdbc.so |
/build_android/jdbc/libs//dbsql |
/build_unix/jdbc/sqlite.jar |
If you are using a 6.1.x or lower version of the product, the supported ABI is armeabi. If you are using a 6.2.x or higher version of the product, the supported ABIs are armeabi-v7a and arm64-v8a.
If you are targeting a 64-bit arm platform, you need to change the build_android/db_config.h file to undefine HAVE_MUTEX_ARM_GCC_ASSEMBLY and define HAVE_MUTEX_ARM64_GCC_ASSEMBLY like the following:
Having built the JDBC driver, you can now use it with your project. You can do this using Eclipse and the ADT plugin, which you can get from here:
To make sure everything is working:
Start Eclipse and create an Android project. Use:
test_jdbc as the Android project name.
Create it as an Android 3.2 project.
For the package name, use example.jdbc .
This results in an empty code file. Copy and paste the following example code into that file:
Copy the following files into place:
Back in Eclipse, right click the project name, and select the refresh option to reload the project from the directory. The two new files that were copied into place in the previous step are now included in the project view.
Convert the JAR file to the Android Dalvik format:
Right-click on your project.
Choose Build Path -> Configure Build Path
Click the Libraries tab.
Run the project:
Choose Property -> Android and select any one of the usable build targets.
Right click the project. Choose Run As -> Android
Verify your installation. After a short pause (depending on the speed of your system), the application logo is displayed. Use the Android adb command line application to make sure the application is running as expected:
You can also check if the database ( example.db ) exists in the emulator:
Finally, check the database using the BDB SQL shell:
Источник
Android. Работаем с MS SQL без посредников
Предупреждение:
Вообще говоря, информация из статьи применима только для некоторых специфических случаев. Например, когда приложение работает внутри какого-то сегмента изолированной сети. А в общем случае посредник, коим является http-сервер, всё-таки нужен. Хотя бы потому, что при описанном методе логин/пароль доступа к базе зашиты в приложении и передаются по сети.
Статья является продолжением работы, о которой писал в своём предыдущем посте. Изначально эту часть писать не хотелось (см. предупреждение), но на хабре данная тема ещё не освещена, и в целом в сети меньше информации.
Поэтому, если Вам интересно, как можно из под Android напрямую работать с MS SQL (логично предположить, что и с другими БД, но на практике я этого не делал), добро пожаловать под кат.
В Java (и Android соответственно) соединение с удалёнными БД происходит при помощи JDBC-драйверов. В моём конкретном случае сервер майкрософтовский, и для него существует два драйвера: от Microsoft и открытая альтернатива JTDS. Причём последний, по заверениям разработчиков, работает быстрее и стабильней официального. Вот его и будем использовать.
Грабли: Актуальная версия JTDS на дату написания поста — 1.3.1. Но начиная с версии 1.3.0 драйвер переписан для совместимости с Java 7, и в сети встречаются сообщения о проблеме работы этих версий в Android. Поэтому необходимо использовать последнюю стабильную версию ветки 1.2.* (1.2.8), которая для Java 6.
На SQL-сервере должна быть настроена работа через TCP/IP.
Получение данных
Данные запросов драйвер возвращает в интерфейсе ResultSet который похож на андроидный Cursor, но быстрого способа приведения ResultSet к курсору я не нашёл. Поэтому поступим по-другому, данные из ResultSet будут конвертироваться в массив JSONArray и возвращаться в основную логику приложения, откуда с ними можно будет делать что угодно.
Весь обмен данными, как потенциально продолжительную операцию, будем делать асинхронно. В итоге получается примерно такой симпатичный класс для запросов к MS SQL:
EDIT: Переписал закрытие Connection, Statement и ResultSet в примерах в соответствии с основами.
На вход классу подаётся запрос, на выходе — готовый JSONArray, как если бы мы получали данные от веб-сервера. В отдельном потоке AsyncTask соединяется с сервером, получает данные в ResultSet и формирует из них JSON. Думаю, в целом код примитивен и в пояснениях не нуждается.
Для построения систем, работающих по подобному принципу, лучше передавать на вход не чистые select-запросы, а написать на сервере готовые T-SQL функции, передавая параметры к которым, можно получать нужные выборки.
Insert и Update. Передача данных на сервер
К сожалению, тут я не придумал ничего лучше, просто выполнение Insert-ов в транзакции. В прочем, метод отлично работает, вставка нескольких сотен записей занимает приемлемое время (около секунды на 100 строк, полей в реальном проекте больше, чем в приведённом примере).
EDIT: по совету eyeless_watcher использую метод addBatch() при заполнении PreparedStatement. Вот теперь вставка данных выполняется на самом деле быстро, в одной транзакции. Пример изменил.
Для вставки нужных значений используется PreparedStatement. Нумерация полей в нём почему-то начинается с единицы (см. документацию). А в остальном — всё должно быть понятно. update можно реализовать схожим образом, аналогично используя executeUpdate.
Приведённый подход был использован мной в «боевом» приложении первый раз.
На практике оказалось, что он стабильно работает. Время соединения с БД иногда может занимать несколько секунд (подключаюсь по wi-fi, сервер общий на всё предприятие), но сами транзакции выполняются быстро.
Источник
Каков наилучший способ подключения базы данных android и oracle?
Мне нужно получить доступ к данным из базы данных внешнего оракула из моего приложения android, чтобы обновить локальное приложение базы данных, но я не знаю, какой был бы лучший способ сделать это. Нужно ли мне создавать веб-службу для доступа к базе данных oracle или есть еще один простой способ?
У вас есть (по крайней мере) два варианта:
Используйте Oracle Database Mobile Server . (Лучшая, безопасная ставка)
Загрузите драйверы JDBC и подключитесь таким образом. (Не рекомендуется, небезопасно – особенно для подключения по воздуху)
Взгляните на мой блог блога Android-Oracle Connectivity . Это, надеюсь, поможет вам. Если у вас все еще есть проблемы. Сообщите мне об этом.
Вы не можете напрямую обращаться к базе данных Oracle из приложения Android. Вам необходимо создать веб-службы в PHP, .net или на Java, чтобы установить соединение с Oracle Database. После создания этого веб-сервиса вам необходимо подключить ваше приложение к веб-сервису. Это самый простой способ подключения с Oracle Database.
В Android вы можете напрямую подключаться только к SQLiteDatabase .. Если вы хотите подключиться к MYSQL или Oracle, вам необходимо сделать веб-сервис независимо от того, будет ли он на PHP, .NET или JSP . но без веб-службы вы можете Не использовать оракул в андроиде …
Это также может быть сделано через JDBC-соединение, но у меня нет точного примера этого …
Я думаю, что нет прямого способа подключения приложений Android с oracle db. Для этого вам понадобится веб-сервис php или java или .net. Согласно мне php – лучший способ подключить приложения для Android с внешней базой данных. Для этого вам нужно, чтобы на хосте была одна страница php. Эта страница напрямую связывается с базой данных оракула. Для подключения приложений Android с php-страницей вам нужен json-синтаксический анализ, который легко сделать в разработке приложений для Android.
Также имеется одна надежная трехуровневая архитектура, использующая SAP-Sybase (средний провод) с ORACLE. Подключите свою базу данных Sybase к ORACLE с помощью драйвера JTDS. Затем используйте код генерации в Android. Для справки: базы данных SQL Server и Sybase
Существует более простой способ, чем писать WebService и по-прежнему поддерживать тот же уровень безопасности: использовать виртуальный драйвер JDBC, который использует трехуровневую архитектуру: ваш JDBC-код отправляется через HTTP на удаленный сервлет, который фильтрует JDBC-код (конфигурация & Безопасности) перед передачей его драйверу JDBC Oracle. Результат отправляется вам через HTTP. Есть несколько бесплатных программ, которые используют эту технику. Просто Google «Android JDBC Драйвер через HTTP».
ПОДКЛЮЧЕНИЕ БАЗА ДАННЫХ ORACLE С ANDROID ЧЕРЕЗ LAN
Предоставление некоторых разрешений манифеста
Источник
Работа с базами данных с помощью JDBC драйвера
В этом уроке я бы хотел вас научить работать с базами данных MySQL, PostgreSQL, Oracle. А именно как подключится и выполнять SQL запросы к базе с помощью java.
Что такое JDBC?
JDBC Driver – (Java DataBase Connectivity — соединение с базами данных на Java) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql , входящего в состав Java SE.
Зачем нужен JDBC?
JDBC – позволяет получать доступ к БД, а также выполнять к ней SQL запросы.
Шаг 1.
Скачиваем jar файл JDBC драйвера.
Шаг 2.
Подключение к БД Mysql:
Подключение к БД PostgreSQL:
Подключение к БД Oracle:
В 1-й строке мы указываем наш JDBC драйвер. Не забудьте добавить его в ClassPath иначе его компилятор его не увидит.
Во 2-й строке JDBC Manager который открывает соединение с базой данных и обеспечит нам дальнейшее обращение к ней.
И последняя строка закрывает соединение с БД.
Желательно строку для определения JDBC поместить в блок try для того чтобы контролировать его наличия в вашем приложении.
Шаг 3. Создание таблиц в БД.
Вынесем в отдельный метод соединение с БД.
Этот метод будет создавать в БД таблицу:
и в main методе вызываем метод createDbTable() который создаст таблицу в БД.
В результате вы должны получить:
Шаг 4. Добавление новой записи в БД.
метод который будет возвращать текущую дату и время:
И выполняем наш SQL запрос который лежит в переменной insertTableSQL
Шаг 5. Получение данных с БД.
Шаг 6. Удаление данных с БД.
Выполняем запрос на удаление:
Шаг 7. Обновление данных в БД.
Выполняем запрос на обновление записи:
Выводы.
Все действия с любой базой данных выполняются через SQL запросы, то есть нам достаточно знать SQL для манипуляцией данными в БД.
ПОХОЖИЕ ПУБЛИКАЦИИ
29 комментариев к статье «Работа с базами данных с помощью JDBC драйвера»
Проблема с подключением jdbc к приложению для Android – заголовок комментария.
Почему в жизни так бывает …
строка Connection connection = DriverManager.getConnection(“jdbc:postgresql://хост:порт/имя_дб”,”пользователь”, “пароль”);
выдаёт ошибку Unhandled exception type SQLException
( строка connection.close(); – выдаёт туже ошибку )
При добавлении строки import java.sql.SQLException; в MainActivity.java
выводит сообщение …
The import java.sql.SQLException is never used
При этом файл postgresql-9.2-1002.jdbc4.jar лежит в /libs
И в classpath добавлять пробовал, хотя многие источники говорят, что это не обязательно, достаточно держать файл postgresql-9.2-1002.jdbc4.jar в /libs
При нажатие ctrl+shift+O Eclips добавляет только:
Источник