之前我使用oracle数据库11g为我的Android应用程序和成功存储的值。不幸的是,由于某些问题,我的oracle数据库11g无法打开。我卸载了oracle 11g并安装了oracle数据库10g版。现在我编译程序并关闭模拟器并在oracle中打开表,无法存储值。我不知道这个问题是怎么发生的。在我的代码中,我将端口号为1521,sid为'orcl',表名为'sample'。请给出一个解决方案以及端口号和sid的任何更改。提前致谢
package com.search;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import android.app.Activity;
import android.os.Bundle;
public class OraclesearchActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String a="karthick";
String b="vijay";
String c="vel";
try
{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.2:1521:orcl","system","words");
PreparedStatement pst=con.prepareStatement("insert into sample(first,middle,last)values(?,?,?)");
pst.setString(1,a);
pst.setString(2,b);
pst.setString(3,c);
pst.executeUpdate();
}
catch(Exception e)
{
System.out.println("Exception:"+e);
}
}
}
答案 0 :(得分:2)
可能不是您正在寻找的答案,但我会严肃质疑让移动设备直接连接到oracle或任何dbms的智慧。
相反,请考虑在您的dbms前放置REST或SOAP服务,并让您的移动应用程序连接到该服务。
其中一些好处包括:
也许你真的有一些硬性要求直接连接,但我认为这将是一个罕见且非常具体的要求。更常见的做法似乎是缓冲与服务层的连接,为您提供更大的灵活性,恕我直言。
祝你好运。答案 1 :(得分:0)
我同意第一个答案,不建议将移动设备直接连接到RDBMS。对此有严重的安全隐患,更不用说性能和其他影响了。
如果您不想解决构建自己的Web服务的问题,可以在数据库级别处理它。 Oracle实际上提供了专门为此设计的产品。它被称为数据库移动服务器。
http://www.oracle.com/technetwork/products/database-mobile-server/overview/index.html
您可以在那里阅读,也可以从下载标签下载并试用。除Oracle数据库外,您还需要一个应用服务器。建议使用WebLogic或Glassfish。
它提供了几个优点,主要是能够将Android设备中的SQLite数据与Oracle后端同步而无需任何额外的开发工作。您还可以让应用程序在断开连接模式下运行。
祝你的项目好运。
Eric Jensen, Oracle PM