我需要从外部Oracle数据库中访问数据,以便通过我的Android应用程序更新本地数据库。但是我不知道最好的方法是什么。
我是否需要创建一个Web服务来访问Oracle数据库,或者还有其他简单的方法?
谢谢
你至少有以下两个选项:
使用Oracle Database Mobile Server。(最佳、最安全的选择)
下载JDBC驱动程序并通过该方式进行连接。(不建议,不安全——特别是对于无线连接)
有一种比编写 WebService 更简单的方法,同时保持相同的安全级别:使用一个虚拟 JDBC 驱动程序,该驱动程序使用三层架构:您的 JDBC 代码通过 HTTP 发送到远程 Servlet,该 Servlet 在将其传递给 Oracle JDBC 驱动程序之前过滤 JDBC 代码(配置和安全性)。结果通过 HTTP 发送回给您。有一些免费软件使用这种技术。只需在 Google 上搜索“Android JDBC Driver over HTTP”即可。
还有一种强大的3层体系结构,使用SAP-Sybase(中间层)和ORACLE。使用JTDS驱动程序将您的Sybase数据库连接到ORACLE。然后,在Android中使用您生成的代码。参考资料:SQL Server and Sybase Databases
你不能直接从Android应用程序访问Oracle数据库。你需要在PHP、.net或Java中创建Web服务来连接Oracle数据库。创建完这个Web服务后,你需要将应用程序连接到该Web服务。这是连接Oracle数据库的最简单方法。
在Android中,您只能直接连接到SQLiteDatabase。如果您想连接MYSQL或Oracle,则必须创建Web服务,无论是在PHP、.NET还是JSP上。但是,如果没有Web服务,您无法在Android中使用Oracle...
也可以通过JDBC连接来实现,但我没有确切的示例...
通过局域网实现 Android 与 ORACLE 数据库的连接
授予一些清单权限
<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);
}
}
前提条件是:请注意,无需添加依赖库ojdbc14.jar,只需将ojdbc14.jar复制到您的JAVA_HOME jre -> lib -> ext并在此处粘贴ojdbc14.jar,然后首先通过cmd /终端手动检查jdbc连接,制作任何简单的java程序http://www.javatpoint.com/example-to-connect-to-the-oracle-database