核心api_JDBC_使用步骤总结

打印 上一主题 下一主题

主题 954|帖子 954|积分 2862

JDBC使用步骤总结

1. 注册驱动
  1. Class.forName("com.mysql.cj.jdbc.Driver");
复制代码
2. 获取链接
  1. Connection connection =
  2.                 DriverManager.getConnection(url,user,password);
复制代码
3. 创建statement
  1. //静态:
  2. Statement statement = connection.createStatement();
  3. //动态:
  4. PreparedStatement preparedstatement = connection.preparedStatement();
  5. //编写sql语句,其中动态值用 ? 代替
  6. String sql = "";
复制代码
4. 占位符赋值
  1. //下标从1开始
  2. preparedStatement.setObject(index,value);
复制代码
5. 发送sql语句获取结果集
  1. //非DDL语句
  2. int i = preparedStatement.executeUpdate();
  3. //DDL语句
  4. ResultSet = preparedStatement.executeQuery();
复制代码
6. 查询结果解析结果集
  1. /*
  2. resulset看成一个表格,里面有行有列,其中含有一个游标,初始指向第1行之前
  3. 可以通过next()方法遍历
  4. getObject(columName):获取当前行此列名的对象
  5. resulset 包含 MetaData对象
  6. */
  7. //构建metaData对象
  8.         ResultSetMetaData metaData = resultSet.getMetaData();
  9.         //调用方法获取列数
  10.         int columnCount = metaData.getColumnCount();
  11.         ArrayList<Map> list = new ArrayList<>();
  12.         while (resultSet.next()){//遍历行
  13.             Map map = new HashMap();
  14.             for (int i = 1; i <= columnCount; i++) {//遍历列
  15.                 Object value = resultSet.getObject(i);
  16.                 //要用columLabel 不要用 columName,因为columName获取的是真名,无法获取别名
  17.                 String columnLabel = metaData.getColumnLabel(i);
  18.                 map.put(columnLabel,value);
  19.             }
  20.             list.add(map);
  21.         }
复制代码
4.当sql语句含有动态值的时候,为什么不适合用statement
  1. .close();
复制代码
例如:
  1. 此方法会注册两次驱动
  2. 1.DriverManger.registerDriver() 方法本身会注册一次
  3. 2.Driver.static{DriverManager.registerDriver()} 静态代码块也会注册一次
复制代码
5.为什么说preparedStatement 不会发生注入攻击?
因为生成preparedStatement的时候,先传输一遍sql语句的结构,无法通过动态值来混淆,改变sql语句的结构。
6.遍历结果集的方法
  1. 1.加载: class文件-->jvm的class对象
  2. 2. 连接: 验证(语法错误,文件类型) --> 准备(静态变量默认值) --》 解析(触发静态代码块)
  3. 3. 初始化(静态属性赋真实值)
复制代码
7.要用columLabel 不要用 columName
因为columName获取的是真名,无法获取别名

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表