Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Resultset不会从SQL Server 2012视图或表返回任何结果_Java_Android_Sql Server_Sql Server 2012_Executequery - Fatal编程技术网

Java Resultset不会从SQL Server 2012视图或表返回任何结果

Java Resultset不会从SQL Server 2012视图或表返回任何结果,java,android,sql-server,sql-server-2012,executequery,Java,Android,Sql Server,Sql Server 2012,Executequery,以前,我正确地连接了SQL Server 2012视图和表,但几天前,我在这里的好朋友的帮助下尝试从存储过程中进行选择,但没有机会。 所以我忘记了存储过程,尝试了一个视图。 我想从视图中选择数据。 这是我的密码: statement = connectionHelper1.getMyConnection().createStatement(); ResultSet resultSet = statement.executeQuery("select Latitude from View_4 wh

以前,我正确地连接了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();
此代码位于
按钮.setOnClickListener
方法中。当我按下按钮时,它应该打印I变量,但它什么也不做。 但是,当我在SQL Server 2012查询模式下打印此查询时,它将返回值,结果集将正常工作。(我指的是这个选择查询) 我应该说这个视图(视图4)本身是从一个大约有28000000行的表中选择的!! 但是,当我从另一个名为View_2的视图中选择并选择与此视图(View_2)相关的一些其他字段时,它将返回I和ResultSet。 请注意,视图2是另一个视图,包含与视图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的第一个代码中,它不起作用。 我再次注意到,视图4从一个有28000000行的表返回值。 所以我决定直接从那个表中选择,但仍然不能从那个表中选择。 行数可能是原因吗。
如果是,我可以做什么?

如何对现有的
连接执行查询

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-查询结束

错误executeQuery及其堆栈跟踪

之后,您将了解发生了什么。,而您没有日志意味着它正在执行查询…防火墙ecc这次可能会更改


注意:使记录器适应您的(),不要尝试使用标准日志。

我看不出您的代码有任何错误(在最后一个块中关闭rs和语句)。为确保查询的架构与SQL Server 2012中的架构相同,请在查询中包含完整的架构名称,并在executeQuery之后记录查询(检查查询是否执行,以及是否再次进入循环。您好,彼得。是的,我总是从android studio复制我的select语句,并在SQL Server Management中打开一个新的查询窗口,然后粘贴我的语句并从studio执行。模式为dbo。例如dbo.View_2,即使使用模式,它也不会返回任何内容。没有错误或其他信息Logcat中有错误。我可以从中选择的视图_2位于同一个DB中。行的数量可能会影响查询所需的时间…但要么它仍在执行,要么你得到一个错误…这不仅仅是跳过;)我将wile更改为if like this,并使用前10名编辑select,如下所示:if(resultSet.next()){Toast.makeText(getApplicationContext(),“It Works!”,Toast.LENGTH_SHORT.show();}其他{Toast.makeText(getApplicationContext(),“Get Out!”,Toast.LENGTH_LONG.show()}它不会烤面包!就像跳过一样!还有简单的查询:ResultSet ResultSet=statement.executeQuery(“从dbo.View_4中选择前10个纬度,其中IMEI=N'xxxxxx'));我在IMEI之前添加了N,并在SQL Studio中复制和运行它。在android Studio中,执行它需要3-4秒。使用此代码我发现了问题。DB的排序规则是我的问题,请注意。我发现了问题!但我以前解决过它,我不知道它为什么仍然存在!我发现它:java.SQL.SQLException:语句失败因为列“Latitude”(ID=0)使用排序规则Persian_100_CI_AI!但我已将DB排序规则更改为Latin1_General_100_CI_,因为当我转到DB的属性时,它会显示拉丁排序规则