Resultset不会从SQL Server 2012 View或Table返回任何结果

时间:2015-11-30 14:14:32

标签: java android sql-server sql-server-2012 executequery

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

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查询模式下打印此查询时,它返回值和Resultset工作。 (我的意思是这个选择查询) 我应该说这个View(View_4)本身可以选择一个大约有28,000,000行的表! 但是当我从另一个名为View_2的View中选择并选择与此View(View_2)相关的其他一些字段时,它将返回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();

下面的代码返回查询的值和结果,然后打印出I. 但在我使用View_4的第一个代码中,它不起作用。 我再次注意到View_4从具有28,000,000行的表中返回值。 所以我决定直接从该表中进行选择,但仍然无法从该表中进行选择。 行数可以是原因。 如果是,我该怎么办?

1 个答案:

答案 0 :(得分:0)

如何在现有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 - 执行查询

     

executeQuery - Latitude =“...

     

executeQuery - Query End

  

错误 executeQuery及其stacktrace

此后您将理解正在进行的操作.. ,虽然您没有日志意味着它正在执行查询...防火墙ecc可以更改此时间...

注意:将记录器调整到您的(android LOG),不要Toast尝试使用标准LOG。