我试图通过SQLite的android手机与局域网上的oracle服务器之间的JDBC连接来执行数据同步。我可以通过手机连接到服务器,并进行查询。我可以用oracle数据库中正确的行数返回结果集,但列中的所有数据都有一个空值。我检查了数据库,并且每列都有数据。查看结果集的元数据,我可以看到我也为每列获得了所有正确的标题。
我在手机上使用10.2.0.3 oracle jdbc驱动程序 - 我无法使用.4或.5工作 - 使用4.0.3 Android操作系统。它连接到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 dao = getDao(foo.class);
DeleteBuilder 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罐子,但是这些都不能在android上工作 - 我无法连接。
我似乎无法找到遇到类似问题的任何人,所以我有点难住,因为我绝对不是数据库专家。我见过其他代码示例,其中人们似乎没有任何问题做我正在尝试做的事情。我不确定这是一个简单的修复,我只是没有看到,或者我无法从android手机上做的事情。第一次张贴海报,希望我已经正确表达了我的问题,并提供了所需的所有信息。
提前致谢。