渴望寻找,我希望你能帮助我。
目前,我想从我的Android应用程序中获取OracleDB服务器(在LAN上)的一些数据。我正在使用带有ojdbc14.jar的JDBC和我的Android应用程序中的以下代码以及我使用logcat的stackTrace:
http://pastebin.archlinux.fr/432118
正如你所看到的,有一个很大的例外,我无法修复它......
有人已经成功使用他的Android应用程序和没有web服务的OracleDB连接? 有人可以帮我解决这个例外吗?
有关信息:我试图更改ojdbc驱动程序(我做过的最糟糕的事情>。>),并检查了网址的有效性。
感谢您的帮助...
编辑:应用程序必须从OracleDB获取数据,并将其存储在Android的本地SQLite数据库中,因为Android设备将断开LAN连接(我不想让数据从网[3G])。断开连接后,该应用程序将使用SQLite上的本地数据。当用户的活动完成后,设备将重新连接到LAN,并且应用程序将编辑的SQLite本地数据与主Oracle DB服务器同步。 SQLite< - local - > App< - 连接/同步时---> OracleDB的
答案 0 :(得分:4)
Oracle实际上有一个专门用于将Oracle数据库与移动设备同步的产品。它被称为移动服务器。
然而,使用模式与您描述的略有不同;您可以使用本地Berkeley DB或SQLite数据库,然后移动服务器将其与Oracle数据库同步,而不是直接连接到Oracle数据库。
它可以作为一个自动处理同步的单独进程运行,也可以使用API调用来控制程序内的同步。如果这听起来像是对你有用的东西,check it out here。
您可以从下载标签下载并试用。
解决问题的好运。
此致
埃里克 Oracle PM
答案 1 :(得分:1)
我找到了答案!产品Oracle Database Lite就是解决方案。我解释一下......
Oracle Database Lite是一个很大的产品,文档难以理解。我不可能理解它是如何工作的。但是,我试过安装它。并且,在安装文件夹中,有一个jdbc文件夹。
在那里,你会找到一个ojdbc14.jar。在项目中使用它,而不是在经典Oracle网页上找到的ojdbc14.jar。它有效!
您将能够使用JDBC通过Android应用程序连接Oracle数据库。
谢谢大家, 最好的问候,
Eriatolc
答案 2 :(得分:0)
ORACLE数据库与LAN的ANDROID连接
授予一些明确权限
<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 Class
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 - &gt; lib - &gt;分机和粘贴在这里ojdbc14.jar 然后首先通过cmd / terminal手动检查jdbc连接 制作任何简单的java程序 http://www.javatpoint.com/example-to-connect-to-the-oracle-database