ps.setString(1, userName);
时间: 2023-11-27 16:49:43 浏览: 81
这段代码是使用 PreparedStatement 对象向 SQL 语句中的占位符设置参数。其中,第一个参数 1 表示该占位符的位置(从 1 开始),第二个参数 userName 是要设置的参数值。
具体来说,这段代码将 userName 的值作为参数设置给了 SQL 语句中的第一个占位符,可以用类似下面的 SQL 语句来表示:
```
SELECT * FROM users WHERE name = ?
```
这里的问号就是占位符,它表示待填充的参数。在执行 SQL 语句之前,我们需要使用 PreparedStatement 对象的 setXXX() 方法给这些占位符设置参数。在这个例子中,我们使用了 setString() 方法设置了一个字符串类型的参数。
相关问题
@Overridepublic void addPerson(Person newPerson) { String sql = "INSERT INTO person VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; try (Connection conn = DriverManager.getConnection(url, username, password); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setString(1, newPerson.getUserAccount()); ps.setString(2, newPerson.getUserName()); ps.setString(3, newPerson.getUserSex()); ps.setString(4, newPerson.getUserBirthday()); ps.setString(5, newPerson.getUserIdCard()); ps.setString(6, newPerson.getUserPassword()); ps.setInt(7, newPerson.getUserIdentify()); ps.setString(8, newPerson.getUserOtherName()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }}属于orm哪一种
这段代码使用了 JDBC 的 PreparedStatement 来执行 SQL 语句,属于基于 JDBC 的 ORM(Object-Relational Mapping)的一种实现方式。ORM 是一种将对象模型和关系模型进行映射的技术,目的是让我们可以像操作对象一样操作数据库,从而屏蔽关系数据库的底层实现细节,提高开发效率。虽然这段代码没有使用任何 ORM 框架,但是使用了 JDBC 的 PreparedStatement 来执行 SQL 语句,可以看作是一种基于 JDBC 的 ORM 实现方式。
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` 的情况了。