我正在尝试通过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手机无法做到的事情。堆叠的第一次海报,希望我已正确地表达了我的问题,并提供了所需的所有信息。
提前致谢。