初识jdbc中的内容
连接到数据库当中,第一步,然后自己书写增删改的操作以及查询
public void update(String sql, Object... args) {
//1.获取数据库连接
Connection conn = null;
PreparedStatement ps = null;
try {
conn = jdbcUtils.getConnection();
//2.预编译sql语句,返回PreparedStatement实例
ps = conn.prepareStatement(sql);
//3.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
//4.执行操作
ps.execute();
// 如果执行的是查询操作,有返回结果,则此方法返回true
// 如果执行的是增删改操作,没有发挥结果,则此方法返回的是false
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//5.资源关闭
jdbcUtils.closeRescource(conn, ps);
}
以级查询操作
public <T> T getInstance(Class<T> clazz,String sql,Object...args){
Connection conn= null;
PreparedStatement ps = null;
try {
conn = jdbcUtils.getConnection();
// 预编译sql语句
ps = conn.prepareStatement(sql);
// 填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i+1,args[i]);
}
//4.执行操作
ResultSet rs = ps.executeQuery();
// 获取结果集的元数据: ResultSetMetaData
ResultSetMetaData rsmd = rs.getMetaData();
// 通过 ResultSetMetaData来获取结果集中列数
int columnCount = rsmd.getColumnCount();
if(rs.next()){
T t = clazz.newInstance();
for (int i = 0; i < columnCount; i++) {
// 获取每一列的列值
Object columnvalue = rs.getObject(i + 1);
// 获取每个列的列名
String columnName = rsmd.getColumnName(i+1);
// 给cust对象指定的columnName属性,赋值为columnValue,通过反射
Field field = clazz.getDeclaredField(columnName);
field.setAccessible(true);
field.set(t,columnvalue);
}
return t;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 资源关闭
jdbcUtils.closeRescource(conn,ps);
}
return null;
}
在学习完查询完,询问过别人,有没有必要去学东西源码,针对不同的方面去学习jdbc,但是我已经学完了,算了,就继续往下走吧。
学习完Dao类以及具体实现类之后,就去学习了数据库连接池,C3p0 Druid,等数据库连接池,数据库使用的jar包,等下上传到百度云盘,有兴趣的可以下载自己去玩。
举一个Druid的例子
public void getConnection() throws SQLException {
DruidDataSource source=new DruidDataSource();
source.setDriverClassName("com.mysql.cj.jdbc.Driver");
source.setUrl("jdbc:mysql://localhost:3306/test");
source.setUsername("root");
source.setPassword("password");
DruidPooledConnection conn = source.getConnection();
System.out.println(conn);
}
当然也可以去封装一个,然后再来使用。
最后使用apche封装的方法,再来进行使用,真实便捷,但是没关系,我以及学完了,源码学了,其他的也学了。
以后每天尽量都更新一下jdbc,大家都可以来支出错误。