String sql = "select * from Book where book_ISBN=?"; Object[] params = { "13456" }; boolean b = DBHelper.executeUpdate(sql, params); //检查添加到图书信息是否正确 assertEquals("13456",b.getBook_ISBN());为什么会有报错
时间: 2024-03-25 22:36:00 浏览: 18
这段代码中的错误可能是由于 `boolean b = DBHelper.executeUpdate(sql, params);` 返回的是一个 boolean 类型的值,而不是 `Book` 类型的值,因此不能直接调用 `b.getBook_ISBN()` 方法。
如果你想要获取 `Book` 类型的对象,应该使用 `DBHelper.executeQuery` 方法来执行查询,然后将结果集转换为 `Book` 对象。例如:
```
String sql = "select * from Book where book_ISBN=?";
Object[] params = { "13456" };
ResultSet rs = DBHelper.executeQuery(sql, params);
Book book = null;
if (rs.next()) {
book = new Book();
book.setBook_ISBN(rs.getString("book_ISBN"));
// 其他设置属性的代码
}
// 检查添加到图书信息是否正确
assertEquals("13456", book.getBook_ISBN());
```
当然,具体的错误还需根据报错信息进一步分析。
相关问题
Book book = new Book(); book.setBook_ISBN("3456"); book.setBook_category("计算机科学"); book.setBook_name("java编程思想"); book.setBook_author("张三"); book.setPublish_house("机械工业出版社"); book.setPublish_time("2020-01"); book.setBook_price(65); book.setBook_sum(10); book.setBook_remain(2); book.setBook_introduce("无"); //调用addBook方法 BookDao bookDao = new BookDao(); bookDao.addBook(book); //验证是否成功插入一条数据 String sql = "select count(*) from Book where Book_ISBN=?"; Object [] params = {book.getBook_ISBN() }; boolean count = DBHelper.executeUpdate(sql,params); assertEquals(1,count);为什么assertEquals(1,count);会报错
可以根据错误提示信息来判断具体错误原因,如果没有错误提示信息,可以检查以下几个方面:
1. 是否正确引入了JUnit框架,在代码中是否正确导入了需要的类。
2. 在测试方法中是否正确创建了被测试的对象和使用了正确的测试数据。
3. 在测试方法中是否正确调用了被测试方法并获取了正确的返回值。
4. 在使用assertEquals方法时,参数顺序是否正确,期望值和实际值是否一致。
5. 是否存在数据库连接问题,需要检查数据库连接是否正常,以及SQL语句是否正确。
boolean flag = false; PreparedStatement ps; ResultSet rs; try { String sql = "select * from usr where username = ? and password = ?"; ps = DBconn.getConn().prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(sql);如何避免其中rs为null
在执行 `rs = ps.executeQuery(sql);` 时,如果查询结果为空,`rs` 不会为 `null`,而是返回一个空的 `ResultSet` 对象,因此我们需要使用 `rs.next()` 判断是否有查询结果。
可以改写为如下代码:
```
boolean flag = false;
PreparedStatement ps;
ResultSet rs;
try {
String sql = "select * from usr where username = ? and password = ?";
ps = DBconn.getConn().prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery(); // 不需要再传入 sql 参数
if (rs.next()) { // 判断是否有查询结果
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
DBconn.closeConn();
}
```
这样就可以避免 `rs` 为 `null` 的情况了。