栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDBC连接数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC连接数据库

目录

 

1、JDBC是什么?

2、JDBC的本质是什么?

3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。

4、JDBC编程六步(需要背会)    

完整代码(第一种SQL查询语句)

完整代码(第二种SQL删除语句)


1、JDBC是什么?


    Java Database Connectivity(Java语言连接数据库)

2、JDBC的本质是什么?


    JDBC是SUN公司制定的一套接口(interface)
        java.sql.*; (这个软件包下有很多接口。)

    接口都有调用者和实现者。
    面向接口调用、面向接口写实现类,这都属于面向接口编程。

    为什么要面向接口编程?
        解耦合:降低程序的耦合度,提高程序的扩展力。
        多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
            建议:
                Animal a = new Cat();
                Animal a = new Dog();
                // 喂养的方法
                public void feed(Animal a){ // 面向父类型编程。
                
                }
            不建议:
                Dog d = new Dog();
                Cat c = new Cat();
    
    思考:为什么SUN制定一套JDBC接口呢?
        因为每一个数据库的底层实现原理都不一样。
        Oracle数据库有自己的原理。
        MySQL数据库也有自己的原理。
        MS SqlServer数据库也有自己的原理。
        ....
        每一个数据库产品都有自己独特的实现原理。
    
    JDBC的本质到底是什么?
        一套接口。

3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。

    classpath=.;D:course6-JDBCresourcesMySql Connector Java 5.1.23mysql-connector-java-5.1.23-bin.jar

    以上的配置是针对于文本编辑器的方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。
    IDEA有自己的配置方式。
    


4、JDBC编程六步(需要背会)
    

完整代码(第一种SQL查询语句)
//JDBC代码
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;


        try {
            //1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");
            //3、获取数据库操作对象
            stmt = conn.createStatement();
            //4、执行sql
            String sql = "select * from t_user where loginName = '"
                    +userLoginInfo.get("loginName")+ "'and loginPwd ='"
                    +userLoginInfo.get("loginPwd")+"'";
            rs= stmt.executeQuery(sql);
            //5、处理结果集
            if (rs.next()){
                loginSuccess =true;
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }finally {
            //6、释放资源
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }


    第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

//1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");

    第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

//2、获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");

    第三步:获取数据库操作对象(专门执行sql语句的对象)

//3、获取数据库操作对象
            stmt = conn.createStatement();

    第四步:执行SQL语句(DQL DML....) 语句不同处理查询结果方式就不同(看第二种方式)。

//4、执行sql
            String sql = "select * from t_user where loginName = '"
                    +userLoginInfo.get("loginName")+ "'and loginPwd ='"
                    +userLoginInfo.get("loginPwd")+"'";
            rs= stmt.executeQuery(sql);

    第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)

 //5、处理结果集
            if (rs.next()){
                loginSuccess =true;
            }

    第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)        

//6、释放资源
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

完整代码(第二种SQL删除语句)
//JDBC代码
         Connection conn = null;
        PreparedStatement ps =null;
        try {
            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");

            


            String sql = "delete from dept where deptno = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,50);

            int count = ps.executeUpdate();
            System.out.println(count);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }finally {
            if (ps != null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }


    第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

//1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");

    第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

//2、获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");

    第三步:获取预编译数据库操作对象(专门执行sql语句的对象)

//3、获取预编译数据库操作对象
            String sql = "delete from dept where deptno = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,50);

    第四步:执行SQL语句(DQL DML....) 语句不同处理查询结果方式就不同(看第二种方式)。

//4、执行sql
            int count = ps.executeUpdate();
            System.out.println(count);

    第五步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

if (ps != null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号