相关疑难解决方法(0)

如何在Java中查找ResultSet是否为空?

我怎么能发现ResultSet通过查询数据库得到的是空的?

java jdbc resultset

31
推荐指数
5
解决办法
11万
查看次数

如何检查结果集是否有一行或更多行?

如何使用JDBC检查结果集是否有一行或更多行?

java sql jdbc resultset

23
推荐指数
1
解决办法
5万
查看次数

当没有结果时,executeQuery(String sql)会返回什么?

可能重复:
如何检查结果集是否有一行或更多行?

executeQuery(String sql)当SQL Query的结果为零行时将返回什么>?如果它返回一个ResultSetObject,我们将如何检测到SQL Query没有返回任何内容.

假设SQL Query是一个SELECT语句.

java sql jdbc

6
推荐指数
1
解决办法
5万
查看次数

检查Java中的ResultSet是否为空

我在我的程序中使用HSQLDB.我想检查结果集是否为空.

//check if empty first
if(results.next() == false){
System.out.println("empty");
}

//display results
while (results.next()) {
String data = results.getString("first_name");
//name.setText(data);
System.out.println(data);
}
Run Code Online (Sandbox Code Playgroud)

上述方法无法正常工作.根据这个帖子我要打电话.first().beforeFirst()将光标停留在第一行,但.first().beforFirst()在HSQL不支持.我也尝试添加,connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 但我仍然得到相同的结果(我得到消息为空,数据来自数据库!!!)我在这里做错了什么?

java jdbc hsqldb

6
推荐指数
1
解决办法
4万
查看次数

sqlite选择where ...和vs. case ... when

我是sqlite的新手,并且有一个填充的数据库,我需要确定数据库中的任何数字生物是否具有适合度的阈值水平(适应度> = 2)并且存活(生命= 1).我还需要排除我想要找到合适配偶的生物体的indivID(主键)(indivID INTEGER PRIMARY KEY).

下面我尝试了第一行代码,但它引发了一个SQL错误:

[SQLITE_ERROR] SQL错误或缺少数据库("CASE"附近:语法错误).

但是我知道错误在SQL语句中,因为其他函数正在成功访问数据库.

SELECT indivID FROM population CASE fitness >=2 WHEN live = 1 AND indivID!=[specific individual] ELSE NULL END
Run Code Online (Sandbox Code Playgroud)

我已经尝试了下一行代码,但它没有正确排除特定个体的indivID:

SELECT [some column names] FROM [a database] WHERE fitness>=2 AND live=1 AND indivID!=[specific individual]
Run Code Online (Sandbox Code Playgroud)

我有三个问题:

1)我在上述陈述中的错误在哪里

2)使用"case ... when"和"where ... and"语句之间的区别是什么

3)在这些查询中可能甚至可能存在可能没有足够高适应度(大于2)的"live = 1"个体来获得select语句的资格,因此这两个查询的结果都是不可行的个人(如果写得正确)则为空?

在此先感谢您的帮助!

sql sqlite jdbc

3
推荐指数
1
解决办法
2万
查看次数

Java中的ResultSet可以为"null"吗?

我有一个非常基本的代码执行一个select查询并返回一个布尔值,具体取决于结果集是否为空.

public boolean checkIfUserHasPreferences(String username){
        ResultSet rs = null;
        boolean checkBoolean = false;

        try {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            con = DriverManager.getConnection(Messages.getString("OracleUserManagement.0"), Messages.getString("OracleUserManagement.1"), Messages.getString("OracleUserManagement.2")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

            PreparedStatement statement = con.prepareStatement("SELECT USERNAME FROM USER_PREFERENCES WHERE USERNAME = ?"); 
            statement.setString(1, username);
            rs = statement.executeQuery();
            if (rs == null){
                System.out.println("I checked it was true!");
                checkBoolean = true;
            } else {
                System.out.println("I checked it was false!");
                checkBoolean = false;
            }

            con.commit();

            con.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return checkBoolean;
    }
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是,即使表/数据库是空的,它总是打印出"我检查它是假的!".

这是因为即使结果集返回0行,它也不是= null?我应该使用while(rs.next())来检查吗?

java sql null jdbc resultset

1
推荐指数
2
解决办法
2万
查看次数

避免通过ResultSet的next()方法跳过行

这是一个简单的代码,可以打印数据库中的某些行。但是当我执行此操作时,屏幕上不会打印任何内容。我发现问题在于rs.next()方法正在跳过一行。那么,如何避免这种情况或重置rs.next()方法的位置?

 String searchword = Searchtf.getText();
 try {
        Class.forName("com.mysql.jdbc.Driver");

        java.sql.Connection con = DriverManager.getConnection(url, db_username, db_password);

        java.sql.Statement stat = con.createStatement();

        String searchQuery = "SELECT * FROM user WHERE Name LIKE '" + searchword + "' ";

java.sql.ResultSet rs = stat.executeQuery(searchQuery);

        if (rs.next()) {
            while (rs.next()) {
                System.out.print(rs.getString("idUser") + " ,");
                System.out.print(rs.getString("Name") + " ,");
                System.out.print(rs.getString("Email") + " ,");
                System.out.println(rs.getString("country") + " .");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Not Found");
        }
  } catch (Exception ex) {
        ex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

java mysql database jdbc resultset

1
推荐指数
1
解决办法
2557
查看次数

如何在Spring JDBC ResultSetExtractor中检查ResultSet是否为空?

似乎ResultSet空的标准检查在Spring的JDBC中不起作用ResultSetExtractor。我通过以下方式使用它:

    return jdbcTemplate.query(sql, ps -> {
        ps.setLong(1, fooParam1);
        ps.setLong(2, fooParam2);
    }, rs -> {
        return rs.getLong(1);
    });
Run Code Online (Sandbox Code Playgroud)

那么ResultSet在这种模式下检查空度的正确方法是什么?

java spring jdbc java-8

0
推荐指数
1
解决办法
2318
查看次数

标签 统计

jdbc ×8

java ×7

resultset ×4

sql ×4

database ×1

hsqldb ×1

java-8 ×1

mysql ×1

null ×1

spring ×1

sqlite ×1