JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。说白了,它用于直接调用 SQL 命令。 主要步骤: 1.加载JDBC驱动程序 2.建立于数据库的连接
jdbc(java data base connectivity,java数据库连接)是一种用于执行sql语句的java api,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。说白了,它用于直接调用 sql 命令。
①新建一个和数据库字段匹配的类UserInfo喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:sql;">public class UserInfo {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", username=" + username + ", password="
+ password + "]";
}
}
②在JdbcUtils类中添加一个应用反射机制的数据库查询函数
public List queryRef(String sql, List params, Class cls)
throws Exception {
List list = new ArrayList<>();
ps = connection.prepareStatement(sql);
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++)
ps.setObject(i + 1, params.get(i));
}
resultSet = ps.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int col_len = metaData.getColumnCount();
while (resultSet.next()) {
// 存在记录时,实例化一个对象
T record = cls.newInstance();
for (int i = 0; i < col_len; i++) {
String col_name = metaData.getColumnName(i + 1);
Object col_value = resultSet.getObject(col_name);
// 将列对应的值赋给对象的相应字段
Field field = cls.getDeclaredField(col_name);
field.setAccessible(true);
field.set(record, col_value);
}
// 将这条记录添加到List中
list.add(record);
}
return list;
}
③TestMain类,添加一个执行操作
/*执行六:反射机制查询记录*/
String sqlQuery = "select * from userinfo";
try {
List list = jdbcUtils.queryRef(sqlQuery, null,
UserInfo.class);
System.out.println(list);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
jdbcUtils.release();
}