当前位置: 首页 > 面试题库 >

在Android中连接到Oracle

壤驷乐邦
2023-03-14
问题内容

所以人们可能会告诉我这是一个坏主意,但我至少想让它尝试一下。

编辑 此应用程序的目的是仅当设备与oracle
db位于同一网络中或通过VPN连接到网络时才可以工作。数据库中的信息将无法全局访问,这就是为什么我需要直接连接到oracle db的原因。

现在根据这个线程

他成功查询了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");

我收到以下异常

“异常:网络适配器无法建立连接”

但是,如果我在标准的Java应用程序中使用main方法创建此类的实例,则该连接有效。有任何想法吗?


问题答案:

:)是的,我会告诉你这是一个“坏”主意。恕我直言,鉴于Android应用程序旨在在可能会导致连接问题或暂时失去连接的手机上运行,​​因此我认为每个好的应用程序都应具有一定程度的离线功能。因此,您将实现一些非常基本的同步机制-
例如与SampleSyncAdapter演示的-
与应用程序本地SQLite db同步。

我认为这是最好的方法(也是为了用户体验)。



 类似资料:
  • 我做错了什么?多谢了。

  • 谁能告诉我这个错误与什么有关,以及如何修复它? 无法解析Android应用程序模块的Gradle配置。解决gradle构建问题和/或重新同步。(图片) 我已经按照谷歌在Gradle文件中的说明做了所有事情,并对其进行了同步,但没有任何帮助。Android Studio 4.2 有错误的图片

  • 我对使用jsoup很陌生,我只想问一下,我是否必须在公共静态void main中使用jsoup代码,就像我在网上研究时看到的那样,还是可以在任何其他方法中使用它。我和Jsoup也有问题。连接()。get()。我的应用程序在运行时总是停止。我已经添加了android。准许互联网连接到我的AndroidManifest。xml。我读了烹饪书,决定从解析文档开始,但仍然生成相同的结果——不幸的是,应用程

  • 问题内容: 我需要将我的android应用程序连接到我的firebird数据库 有人知道该怎么做吗? 请写代码! 问题答案: 我对Firebird并不特别熟悉,但是我猜想最好的方法是使用某种Web服务(RESTful?),该服务允许您的Android客户端与数据库进行通信。这是大多数应用程序通常使用的解决方案,因为您无法从Android直接连接到数据库。从设计的角度来看也很好,因为您的应用程序不依

  • 我正在尝试将Azure与Android Studio连接起来。我已经按照关于Azure的教程,创建了一个移动服务。然后它给了我一些代码添加到我的应用程序,以便他们连接。但是,代码抛出了一个我无法理解的异常。我从头到脚在网上搜了一遍,也找不到答案。我认为这与依赖项或库的导入方式有关(通过将jar文件粘贴到libs文件夹中并添加依赖项)。 引发异常的代码(由Azure提供):

  • 我实际上是在编程一些东西,不让用户访问Android原生wifi连接页面,所以我在我的Android应用程序中编程。它扫描可用的无线网络,将其显示在列表视图中,然后单击要连接的网络。 事实上,除了我的连接功能之外,一切都很好,这使得我的应用程序崩溃,所以如果你有任何想法...下面是代码(这是用户输入网络通行证后调用的函数)和堆栈跟踪: 堆栈跟踪: