Android JDBC Oracle查询返回正确的行数,但没有数据

时间:2012-04-23 16:48:59

标签: android oracle jdbc

我正在尝试通过Android手机与SQLite之间的JDBC连接与局域网上的oracle服务器进行数据同步。我可以通过手机连接到服务器,并进行查询。我可以使用oracle db上的正确行数获取结果集,但列中的所有数据都具有空值。我检查了数据库,每列都有数据。查看结果集的元数据,我可以看到我也获得了每列的所有正确标题。

我正在手机上使用10.2.0.3 oracle jdbc驱动程序 - 我无法使用4.0.3 Android操作系统获得.4或.5。它连接到11g oracle服务器。

以下是我执行查询并插入SQLite的代码部分:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = statement.executeQuery("SELECT * from foo");

if(rs != null) {
    Dao<foo,Integer> dao = getDao(foo.class);
    DeleteBuilder<foo, Integer> deleteBuilder = dao.deleteBuilder();
    deleteBuilder.where().isNotNull("DESCRIPTION");
    dao.delete(deleteBuilder.prepare());

    while(rs.next()) {
        dao.create(createFoo(rs));
    }
 }

createFoo方法就像这样:

protected Foo createFoo(ResultSet rs) throws SQLException {

    Foo foo = new Foo();
    foo.setNumber1(BigInteger.valueOf(rs.getInt("Number1")));
    foo.setNumber2(BigInteger.valueOf(rs.getInt("Number2")));
    foo.setDescription(rs.getString("Description"));
    foo.setString2(rs.getString("Sting2"));

    return foo;
}

所有rs.getStrings都返回null,并且rs.getInts返回0(我相信这是空值的默认返回值)

我也尝试过使用execute而不是executeQuery来解决同样的问题。

Statement statement.execute("SELECT * FROM foo");
ResultSet rs = statement.getResultSet();

我也尝试了所有大小写,以确保在查询和rs.get ...方法中区分大小写不是问题。我也尝试过ojdbc5和ojdbc6 jar,但是这些都不适用于android - 我无法连接。

我似乎找不到任何遇到类似问题的人,所以我有点难过,因为我绝对不是数据库专家。我已经看过其他代码示例,人们似乎在做我正在尝试做的事情没有问题。我不确定这是一个我只是没有看到的简单修复,还是我从Android手机无法做到的事情。堆叠的第一次海报,希望我已正确地表达了我的问题,并提供了所需的所有信息。

提前致谢。

0 个答案:

没有答案