按以下要求设计程序,完成对数据表users的查询操作,已知表记录如下。 mysql> select * from users; +----+--------+----------+-----------------+------------+ | id | name | password | email | birthday | +----+--------+----------+-----------------+------------+ | 1 | zhangs | 123456 | zs@sina.com | 1980-12-04 | | 2 | lisi | 123456 | lisi@sina.com | 1981-12-04 | | 3 | wangwu | 123456 | wangwu@sina.com | 1979-12-04 | +----+--------+----------+-----------------+------------+ (1)使用DBCP数据库连接池的BasicDataSource类直接创建数据源对象,类名为DBCPUtils。 (2)创建QueryState类,完成查询操作id=1,并返回对象。
时间: 2023-08-15 15:51:36 浏览: 78
查询数据表记录
以下是基于Java语言和DBCP连接池的程序设计,实现对数据表users的查询操作:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbcp2.BasicDataSource;
public class DBCPUtils {
//定义数据库连接池对象
private static BasicDataSource dataSource = new BasicDataSource();
static {
//设置数据库驱动
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
//设置数据库连接地址、用户名、密码
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//设置数据库连接池的一些参数
dataSource.setInitialSize(5); //初始化连接数
dataSource.setMaxIdle(10); //最大空闲连接数
dataSource.setMinIdle(2); //最小空闲连接数
dataSource.setMaxTotal(20); //最大连接数
dataSource.setMaxWaitMillis(5000); //最大等待时间,单位毫秒
}
//获取数据库连接
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
//关闭数据库连接
public static void closeConnection(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
接下来,我们创建QueryState类,完成查询操作id=1,并返回对象:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class QueryState {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//获取数据库连接
conn = DBCPUtils.getConnection();
//定义查询语句,使用占位符
String sql = "SELECT * FROM users WHERE id = ?";
//创建PreparedStatement对象
ps = conn.prepareStatement(sql);
//设置占位符的值为1
ps.setInt(1, 1);
//执行查询操作
rs = ps.executeQuery();
//遍历查询结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
String email = rs.getString("email");
String birthday = rs.getString("birthday");
//创建User对象并返回
User user = new User(id, name, password, email, birthday);
return user;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭数据库连接
DBCPUtils.closeConnection(conn, ps, rs);
}
//如果查询不到数据,则返回null
return null;
}
}
```
其中,User类的定义如下:
```java
public class User {
private int id;
private String name;
private String password;
private String email;
private String birthday;
public User(int id, String name, String password, String email, String birthday) {
this.id = id;
this.name = name;
this.password = password;
this.email = email;
this.birthday = birthday;
}
//省略getter和setter方法
}
```
以上程序可以完成对数据表users的查询操作id=1,并返回对象。
阅读全文