结果集没有 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。
以前,我正确地连接到 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。