JDBC的学习

目录

一、JDBC 整体

1.1 软件架构方式

1.2 技术体系

1.2.1 浏览器端

1.2.3 服务器端

二、JDBC概述

2.1数据持久化

 2.2数据存储技术

2.3 JDBC介绍

2.4JDBC体系结构

 2.5程序编写的步骤

2.5.1如果使用java idea连接jdbc可以

2.5.2编写代码与数据库建立连接

2.5.3对数据库进行删除操作

2.5.4开发中更倾向于与用资源绑定器进行资源绑定

2.6执行查询语句

一、JDBC 整体

1.1 软件架构方式

1.2 技术体系

1.2.1 浏览器端

css:对网页进行美化。一种表现

Javascript: 负责页面的行为。如注册信息,登录等

HTML(超文本标记语言):负责页面整体框架,负责显示。

 jQuery:js的方法封装在jQuery。现主流框架为vue,reavt(较难),ajs(国内用的少)。

1.2.3 服务器端

Tomcat服务器

XML语言:可自定义标签,用来写配置文件。负责后台配置不负责显示。

Servlet:获取用户名请求,处理请求,响应回浏览器端。

相应协议HTTP:应用层协议。(面试中重点)

如响应码:404找不到资源,200正常访问,500存在bug。

JSP技术:实现动态页面展示。本质为Servlet

EL表达式,JSL,Filter过滤器,Listner监听器。

Ajax:实现异步请求

JSON:与XML相似与Ajax交互(主流,更轻量级)数据交换格式。

二、JDBC概述

2.1数据持久化

 2.2数据存储技术

2.3 JDBC介绍

 

Mysql,Oracle(Oracle公司)SQLServer(微软)DB2(IBM公司)

2.4JDBC体系结构

 2.5程序编写的步骤

2.5.1如果使用java idea连接jdbc可以

在模块上右键 选择Open Module Settings

 加号导入jar包

2.5.2编写代码与数据库建立连接

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.Driver;

/**
 * 使用JDBC连接MySQL数据库
 */
public class test {
    public static void main(String[] args) {
        Connection con = null;
        Statement sta = null;
        try {
            //注册驱动
            Driver driver = new com.mysql.jdbc.Driver();//多态,父类型引用指向自类型对象
            DriverManager.registerDriver(driver);
            //获取连接
                /*url:统一资源定位符
                URL包括:协议,IP,PORT,资源名(bjpowernode)
                自己的ip可以为localhost或者127.0.0.1  连接其他主机有时可能需要关闭防火墙
                 */
            String url = "jdbc:mysql://localhost:3306/bjpowernode";
            String user = "root";
            String password = "123456";
            con = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接对象" + con);
            //获取数据库操作对象
            sta = con.createStatement();
            //执行sql
            String sql = "insert into dept(deptno,dname,loc) value(66,'人事部','北京')";
            //专门执行DML语句(insert delete update) 对表中数据进行修改
            //返回值是“影响数据库中的记录条数”
            int count = sta.executeUpdate(sql);
            System.out.println(count == 1 ? "保存成功" : "保存失败");
            //释放资源在finally中释放
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源 保证资源释放并且尊云从小到大以此关闭,分别对其trycatch
            try {
                if (sta != null) {
                    sta.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

2.5.3对数据库进行删除操作

import java.sql.*;
public class test {
    public static void main(String[] args) {
        Connection conn=null;
        Statement statement=null;
        try{
            //1.注册驱动
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            //2.获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","123456");
            //3.获取数据库操作对象
            statement=conn.createStatement();
            //4.执行SQL语句(JDBC语句不需要写分号)
            String sql="delete from dept where deptno=66";
            int count=statement.executeUpdate(sql);
            System.out.println(count==1?"保存成功":"保存失败");
        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            //5.释放资源
            if(conn!=null){
                try{conn.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
            if(statement!=null){
                try{statement.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

类加载时会执行静态代码块,反射机制

class。forName("com.mysql.jdbc.Driver")

2.5.4开发中更倾向于与用资源绑定器进行资源绑定

创建一个properties的文件

import java.sql.*;
import java.util.ResourceBundle;

public class test {
    public static void main(String[] args) {
        //使用资源绑定器绑定属性配置文件
        ResourceBundle bundle=ResourceBundle.getBundle("jdbc");
        String driver=bundle.getString("driver");
        String url=bundle.getString("url");
        String user=bundle.getString("user");
        String password=bundle.getString("password");
        Connection conn=null;
        Statement statement=null;
        try{
            //1.注册驱动
            Class.forName(driver);
            //或者class。forName("com.mysql.jdbc.Driver")
            //2.获取连接
            conn = DriverManager.getConnection(url,user,password);
            //3.获取数据库操作对象
            statement=conn.createStatement();
            //4.执行SQL语句(JDBC语句不需要写分号)
            String sql="delete from dept where deptno=20";
            int count=statement.executeUpdate(sql);
            System.out.println(count==1?"保存成功":"保存失败");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //5.释放资源
            if(conn!=null){
                try{conn.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
            if(statement!=null){
                try{statement.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

2.6执行查询语句

将第四步的执行语句改为增加第五步

import java.sql.*;
public class test {
    public static void main(String[] args) {
        Connection conn=null;
        Statement statement=null;
        ResultSet rs=null;
        try{
            //1.注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","123456");
            //3.获取数据库操作对象
            statement=conn.createStatement();
            //4.执行SQL语句(JDBC语句不需要写分号)
            String sql="select empno,ename,sal from emp";
            //int executeUpdate(insert/delete/update)
            //ResultSet executeQuery(select) 返回结果集 Query查询的意思 select选择
            rs=statement.executeQuery(sql);
            //输出查询结果集 括号里最终查询结果的列名 getString将输出的所有结果转换为String
            while (rs.next()){
                String empno = rs.getString("empno");
                String ename = rs.getString("ename");
                String sal = rs.getString("sal");
                System.out.println(empno+","+ename+","+sal);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //5.释放资源
            if(rs!=null){
                try{rs.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(statement!=null){
                try{statement.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try{conn.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

        }
    }
}

最终版(经常联系增删改查)

package jdbcTest;

import java.sql.*;
import java.util.ResourceBundle;

public class test01 {
    public static void main(String[] args) {
        //使用资源绑定器绑定属性配置文件
        ResourceBundle bundle=ResourceBundle.getBundle("jdbc");
        String driver=bundle.getString("driver");
        String url=bundle.getString("url");
        String user=bundle.getString("user");
        String password=bundle.getString("password");
        Connection conn=null;
        PreparedStatement ps =null;
        try{
            //1.注册驱动
            Class.forName(driver);
            //2.获取连接
            conn = DriverManager.getConnection(url,user,password);
            //3.预编译sql语句,返回PreparedStatement的实例
//            增
//            String sql="insert into dept(deptno,dname,loc) value(?,?,?)";
//            ps = conn.prepareStatement(sql);
//            ps.setInt(1,60);
//            ps.setString(2,"销售部");
//            ps.setString(3,"上海");
//            改
//            String sql="update dept set dname= ?, loc=? where depto =?";
//            ps = conn.prepareStatement(sql);
//            ps.setString(1,"研发部");
//            ps.setString(2,"北京");
//            ps.setInt(3,60);
//            删
            String sql="delete from dept where deptno=?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,60);
            //4.执行sql
            int count = ps.executeUpdate();
            System.out.println(count);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //5.释放资源
            if(ps!=null){
                try{ps.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try{conn.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值