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
На самом деле у Oracle есть продукт, специально предназначенный для синхронизации базы данных Oracle с мобильными устройствами. Он называется мобильным сервером.
Однако модель использования немного отличается от того, что вы описываете; вместо прямого подключения к базе данных Oracle, вы должны использовать локальную базу данных Berkeley DB или SQLite, а затем мобильный сервер будет синхронизировать ее с базой данных Oracle.
Он может работать как отдельный процесс, который автоматически обрабатывает синхронизацию, или вы можете использовать вызовы API для управления синхронизацией из вашей программы. Если это звучит как что-то полезное для вас, проверьте здесь.
Вы можете загрузить его со вкладки загрузки и попробовать.
Удачи вам в решении вашей проблемы.
Привет
Эрик, Oracle PM
Я нашел ответ! Решение Oracle Database Lite является решением. Я объясняю...
Oracle Database Lite - большой продукт с нечитаемой документацией. Невозможно понять, как это работает. Но я попытался установить его. И в папках установки есть папка jdbc.
Там вы найдете файл ojdbc14.jar. Используйте его в своем проекте вместо ojdbc14.jar, найденного на классической веб-странице Oracle. И это работает!
Вы сможете подключить Oracle DB через приложение Android, используя JDBC.
Спасибо всем, С наилучшими пожеланиями,
Eriatolc
ПОДКЛЮЧЕНИЕ БАЗА ДАННЫХ 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