结果集没有 return 来自 SQL Server 2012 View 或 Table 的任何结果

Resultset does not return any result from SQL Server 2012 View or Table

以前,我正确地连接到 SQL Server 2012 视图和表,但几天前,在我这里的好朋友的帮助下,我尝试从存储过程 select,但是没有机会。 所以我忘记了存储过程并尝试了一个视图。 我想 select 来自视图的数据。 这是我的代码:

statement = connectionHelper1.getMyConnection().createStatement();
ResultSet resultSet = statement.executeQuery("select Latitude from View_4 where IMEI='xxxxx'");
while (resultSet.next()) 
{
    i++;
}
Toast.makeText(getApplicationContext(), " : " + i, Toast.LENGTH_SHORT).show();

此代码在 button.setOnClickListener 方法中。当我按下按钮时,它应该打印 I 变量,但它什么也没做。 但是当我在 SQL Server 2012 查询模式下打印此查询时,它 returns 值和结果集有效。 (我的意思是这个 select 查询) 我应该说这个 View(View_4) 本身 select 来自 table 大约有 28,000,000 行!! 但是当我从另一个名为 View_2 的视图 select 和 select 一些与此视图相关的其他字段(View_2)时,它 returns I 和 ResultSet。 请注意,View_2 是另一个视图,包含与 View_4 不同的字段。 像这样:

statement = connectionHelper1.getMyConnection().createStatement();
ResultSet resultSet = statement.executeQuery("select Latitude from View_2 where name='xxxxxxx'");
while (resultSet.next()) {
    i++;
}
Toast.makeText(getApplicationContext(), " : " + i, Toast.LENGTH_SHORT).show();

下面的代码 returns 值和查询结果,然后打印 I。 但是在我使用的第一个代码中 View_4 它不起作用。 我再次注意到来自 table 的 View_4 returns 值有 28,000,000 行。 所以我决定直接从那个tableselect,但是还是不能select从那个table。 行数可以成为原因吗? 如果是,我该怎么办?

如何对现有 connection.

执行查询
String sql = "select Latitude from View_4 where IMEI='xxxxx'";
Statement std = null;
ResultSet rs = null;
logger.info("executeQuery - sql=" + sql);
try {
    std = connection.createStatement();
    rs = std.executeQuery(sql);
    logger.info("executeQuery - The query is executed");
    while (rs.next()) {
        String lat = rs.getString("Latitude");
        logger.info("executeQuery - Latitude=" + lat);
    }
    logger.info("executeQuery - Query End");
} catch (SQLException e) {
    logger.error("executeQuery", e); //log the full error
} finally {
    if (rs != null) {
        try {rs.close();} catch (SQLException sqle) {}
    }
    if (std != null) {
        try {std.close();} catch (SQLException sqle) {}
    }
}

在此代码示例中,您将在“executeQuery - sql = ..”之后的日志中看到“

任一

executeQuery - The query is executed

executeQuery - Latitude=" ...

executeQuery - Query End

Error executeQuery and its stacktrace

然后你就会明白发生了什么..,虽然你没有日志意味着它正在执行查询......这次防火墙 ecc 可以改变.. .

注意:让logger适应你的(android LOG),你Toast不要尝试使用标准的LOG。