Java>JDBC>>DriverManager、Connection、Statement、ResultSet、PreparedStatement类详解其使用方法

JDBC各个类详解:

    1.DriverManager:驱动管理对象

    2.Connection:数据库连接对象

    3.Statement:执行sql的对象

    4.ResultSet:结果集对象

    5.PreparedStatement:执行sql的对象

 

1.DriverManager:驱动管理对象

    功能:

        1.注册驱动:

            static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager 。

            写代码使用:Class.forName("com.mysql.jdbc.Driver");

            通过查看源码发现:在类中存在静态代码块

                static {

                    try {

                        DriverManager.registerDriver(new Driver());

                    } catch (SQLException var1) {

                        throw new RuntimeException("Can't register driver!");

                    }

                }

                注意:mysql5之后版本的驱动jar包可以省略注册驱动的步骤

        2.获取数据库连接:

            方法:static Connection getConnection(String url, String user, String password)

            参数:

                url:指定连接的路径

                    语法:jdbc:mysql://IP地址(域名):端口号/数据库名称

                    例子:jdbc:mysql://localhost:3306/bd3

                    细节:如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可简写为:jdbc:mysql:///数据库名

                user:用户名

                password:密码

2.Connection:数据库连接对象

    1.功能:

        1.获取执行sql的对象

            Statement createStatement()

            PreparedStatement prepareStatement(String sql)

        2.管理事务

            开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务

            提交事务:commit()

            回滚事务:rollback()

3.Statement:执行sql的对象

    1.执行sql

        1.boolean execute(String sql):可以执行任意的sql (了解)

        2.int executeUpdate(String sql):执行DML (insert、update、delete) 语句、DDL(create、alter、drop)语句

            返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则被执行成功,反之,则失败。

        3.ResultSet executeQuery(String sql) :执行DQL(select)语句

    2.练习:案例演示:https://blog.csdn.net/qq_36050720/article/details/100071767

        1.account表 添加一条记录

        2.account表 修改一条记录

        3.account表 删除一条记录

4.ResultSet:结果集对象,封装查询结果

    Boolean next():游标向下移动一行,判断当前行是否是最后一行的末尾(是否有数据),如果是则返回false,不是返回true。

    getXxx(参数):代表数据类型 如: int getInt(1),String getString()

        参数:

            1.int:代表列的编号,从1开始。 如:getInt(1)

            2.String:代表列名称。 如:getString("balance")

    注意:

        1.游标向下移动一行

        2.判断是否有数据

        3.获取数据

    练习:案例演示:https://blog.csdn.net/qq_36050720/article/details/100075792

        定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回。

            1.定义Emp类

            2.定义方法 public List findAll(){}

            3.实现方法 select * from emp;

5.PreparedStatement:执行sql的对象

    1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题

    2.解决sql注入问题:使用PreparedStatement对象来解决

    3.预编译的SQL:参数使用?作为占位符

    4.步骤:

        1.导入驱动jar包  mysql-connector-java-5.1.37-bin.jar

        2.注册驱动

        3.获取数据库连接对象 Connection

        4.定义sql

            注意:sql的参数使用?作为占位符。 如:select * from user where username = ? and password = ?

        5.获取执行sql语句的对象 PreparedStatement  Connection.PreparedStatement(String sql)

        6.给?赋值:

            方法:setXxx(参数1,参数2)

                参数1:?的位置编号 从1开始

                参数2:?的值

        6.执行sql,接收返回结果,不需要传递sql语句

        7.处理结果

        8.释放资源

    5.注意:后期都会使用PreparedStatement来完成增删改查的所有操作

        1.可以防止SQL注入

        2.效率更高

你可能感兴趣的:(Java语言高级,Java,JDBC,MySQL数据库)