• JDBC原生态代码


    JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!

    DriverManger(驱动管理器)的作用有两个:

    l  注册驱动:这可以让JDBC知道要使用的是哪个驱动;Class.forName(“com.mysql.jdbc.Driver”)

    l  获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。

    Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1”,”root”,”123”);

    Connection对象表示连接,与数据库的通讯都是通过这个对象展开的:

    l  Connection最为重要的一个方法就是用来获取Statement对象;

    Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句:

    l  void executeUpdate(String sql):执行更新操作(insert、update、delete等);

    l  ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;

     (后面我们使用的都是PrepareStatement:预编译的语句,它的好处有三点,防止sql的攻击,提高代码可读性,提高效率)

    PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。

    ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据:

    public static void main(String[] args) {

                 Connection connection = null;

                 PreparedStatement preparedStatement = null;

                 ResultSet resultSet = null;

                

                 try {

                     //1、加载数据库驱动

                     Class.forName("com.mysql.jdbc.Driver");

                     //2、通过驱动管理类获取数据库链接

                     connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "password");

                     //3、定义sql语句 ?表示占位符

                 String sql = "select * from user where username = ?";

                     //4、获取预处理statement

                     preparedStatement = connection.prepareStatement(sql);

                     //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值

                     preparedStatement.setString(1, "王五");

                     //6、向数据库发出sql执行查询,查询出结果集

                     resultSet =  preparedStatement.executeQuery();

                     //7、遍历查询结果集

                     while(resultSet.next()){

                         System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));

                     }

                 } catch (Exception e) {

                     e.printStackTrace();

                 }finally{

                     //8、释放资源

                     if(resultSet!=null){

                         try {

                             resultSet.close();

                         } catch (SQLException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                         }

                     }

                     if(preparedStatement!=null){

                         try {

                             preparedStatement.close();

                         } catch (SQLException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                         }

                     }

                     if(connection!=null){

                         try {

                             connection.close();

                         } catch (SQLException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                         }

                     }

     

                 }

     

            }

  • 相关阅读:
    文件上传之 MultipartFile
    EL表达式从数组 Map List集合取值
    Servlet监听器
    分页技术框架(Pager-taglib)学习三(pager-taglib中传递参数时中文乱码问题)
    分页技术框架(Pager-taglib)学习二(SSH数据库分页)
    分页技术框架(Pager-taglib)学习一(页面分页)
    从request获取各种路径总结
    jsp的页面包含——静态包含、动态包含
    Java对象的浅克隆和深克隆
    Java序列化与反序列化学习(三):序列化机制与原理
  • 原文地址:https://www.cnblogs.com/Hennessy-Road/p/6587219.html
Copyright © 2020-2023  润新知