【发布时间】:2011-06-28 06:52:07
【问题描述】:
所以人们可能会告诉我这是一个坏主意,但我想至少试一试。
编辑这个应用程序的目的是,它只能在设备是 oracle db 所在的同一网络的一部分或通过 VPN 连接到网络时工作。数据库中的信息不会被全局访问,这就是为什么我需要直接连接到 oracle db。
现在根据这个帖子
Connecting the oracle in android application
他成功查询了oracle db。
所以我有一个相当基本的类,在初始化时会尝试连接到我的数据库。
package com.producermobile;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import android.util.Log;
public class ConnectOra {
private Connection conn;
private Statement stmt;
public ConnectOra() throws ClassNotFoundException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@x.x.x.x:1521:PR10";
this.conn = DriverManager.getConnection(url,"xxx","xxx");
this.conn.setAutoCommit(false);
this.stmt = this.conn.createStatement();
} catch(SQLException e) {
Log.d("tag", e.getMessage());
}
}
public ResultSet getResult() throws SQLException {
ResultSet rset = stmt.executeQuery("select customer from customers");
stmt.close();
return rset;
}
}
在我的主要活动 onCreate 方法中,我有这个
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
ConnectOra db = new ConnectOra();
ResultSet rs = db.getResult();
ArrayList<String> list = new ArrayList<String>();
while(rs.next()) {
list.add(rs.getString(1));
}
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, list));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
} catch(Exception e) {
}
}
在 Eclipse 中,我将外部 ojdbc14.jar 文件添加到构建路径。
但是当我跑步时
this.conn = DriverManager.getConnection(url,"xxx","xxx");
我收到以下异常
"Io 异常:网络适配器 无法建立连接”
但是,如果我使用 main 方法在标准 Java 应用程序中创建此类的实例,则连接有效。有什么想法吗?
【问题讨论】:
-
请注意,许多公司将其公司网络与 wifi 隔离,并且需要额外的安全层,还需要使用公司 VPN。