JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力
JDBC 驱动作用:负责连接各种不同的数据库 优点:完全Java代码,快速、跨平台 缺点:访问不同的数据库需要下载专用的
常用的类: DriverManager 类 作用:依据数据库的不同,管理JDBC驱动
常用接口Connection接口作用:负责连接数据库并担任传送数据的任务
Statement接口 作用: 由 Connection 产生、负责执行SQL语句
ResultSet接口 作用 :负责保存Statement执行后所产生的查询结果
1.加载JDBC驱动 2.与数据库建立连接 3.创建Statement或PreparedStatement对象 4.发送SQL语句,并得到返回结果 5.处理返回结果 6.释放资源
查询所有数据库的方法
public static <T> List<T> getQuery(Class<T> clazz, String sql, Object... args) {
Connection connection = null;
PreparedStatement pstm = null;
ResultSet resultSet = null;
try {
//1.连接数据库
connection = JDBCUtil.getConnection();
//2.编写SQL
//3.预编译SQL
pstm = connection.prepareStatement(sql);
//4.填充占位符
for (int i = 0; i < args.length; i++) {
pstm.setObject((i + 1), args[i]);
}
//5.执行操作
resultSet = pstm.executeQuery();
//6判断是否有值,然后打印
//创建一个元数据类型接收返回值
ResultSetMetaData metaData = resultSet.getMetaData();
//获取表中具体列数
int count = metaData.getColumnCount();
List<T> list = new ArrayList<T>();
while (resultSet.next()) {
T t = clazz.newInstance();//等同于 Student student = new Student();
for (int i = 0; i < count; i++) {
//获取对应的字段值
Object value = resultSet.getObject((i + 1));
//获取到对应字段的别名
String label = metaData.getColumnLabel((i + 1));
//获取到对应的字段
Field field = clazz.getDeclaredField(label);
//设置可以自己设置值的权限
field.setAccessible(true);
//将值装配给对象
field.set(t, value);
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}