以前,我正确地连接到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行的表中返回值。 所以我决定直接从该表中进行选择,但仍然无法从该表中进行选择。 行数可以是原因。 如果是,我该怎么办?
答案 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。