【发布时间】:2015-11-30 14:14:31
【问题描述】:
以前,我正确连接到 SQL Server 2012 视图和表,但几天前,在我的好朋友的帮助下,我尝试从存储过程中进行选择,但没有机会。 所以我忘记了存储过程并尝试了一个视图。 我想从视图中选择数据。 这是我的代码:
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 查询模式下打印此查询时,它会返回值并且结果集有效。 (我的意思是这个选择查询)
我应该说这个 View(View_4) 本身是从一个大约有 28,000,000 行的表中选择的!!
但是当我从另一个名为 View_2 的视图中选择并选择与此视图(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 行的表中返回值。 所以我决定直接从那个表中选择,但仍然不能从那个表中选择。 行数是否可能是原因。 如果是,我该怎么办?
【问题讨论】:
-
我看不出您的代码有任何问题(希望您在最后一个块中关闭 rs 和语句)。为确保您查询与 SQL Server 2012 中相同的架构,请在查询中包含完整架构名称并在 executeQuery 之后记录查询(以检查查询是否已执行以及是否进入循环。
-
再次嗨皮特。是的,我总是从 android-studio 复制我的选择语句并在 SQL Server 管理中打开一个新的查询窗口,然后粘贴我的语句并从工作室执行。架构是 dbo。例如 dbo.View_2 即使使用模式,它也不会返回任何内容。 Logcat 中没有错误或错误。我可以从中选择的 View_2 在同一个数据库中。
-
行数会影响查询所花费的时间……但要么它仍在执行,要么你得到一个错误……它不仅仅是跳过; )
-
我将 wile 更改为 if 这样并使用 top 10 编辑选择,如下所示: if (resultSet.next()) { Toast.makeText(getApplicationContext(), "It Works !", Toast .LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "出去!", Toast.LENGTH_LONG).show(); } 它不吐司!就像它在跳过一样!
-
和简单查询:ResultSet resultSet = statement.executeQuery("select top 10 Latitude from dbo.View_4 where IMEI=N'xxxxxx'");我在IMEI前加了N,在SQL Studio中复制运行。在安卓工作室。执行需要 3-4 秒。
标签: java android sql-server sql-server-2012 executequery