所以人们可能会告诉我这是一个坏主意,但我至少想尝试一下。
EDIT该应用程序的目的是,仅当设备属于 oracle db 所在网络或通过 VPN 连接到网络时,它才能工作。数据库中的信息无法全局访问,这就是为什么我需要直接连接到 oracle 数据库。
现在根据这个线程
在android应用程序中连接oracle
他成功查询了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 应用程序中创建此类的实例,则连接有效。有任何想法吗?