• 2019.3.28 JDBC相关


    JDBC(Java Data Base Connectivity)

    JDBC是一组用Java编写的类和接口

    • 使用JDBC的好处:
      • 1.Java的开发人员完全不需要关心数据库的连接方式和实现手段
      • 2.提高代码的可维护性,是一种组件化思想
      • 3.代码的执行效率很高 速度很快
    • JDBC的缺点
      • 1.代码繁琐(最大毛病)
      • 2.维护代价高

    编写JDBC

    增删改(都差不多 就写一个了)

    1.获取连接
    下面的四个信息,只有当开发者在更换数据库时候需要改,其他所有的都不需要改
    String url = "jdbc:mysql://localhost:3306/j0302";
    String username = "root";
    String password = "1234";
    String driver = "com.mysql.jdbc.Driver"; // 驱动

        Student student = new Student();
        student.setName("王五");
        student.setAddress("上海");
    
        Connection conn = null;
        PreparedStatement stmt = null;
    
        try {
    
            //加载驱动
            //Java反射技术
            Class.forName(driver);
    
            //创建一个数据库连接
    
            conn = DriverManager.getConnection(url, username, password);
    
    1. 执行SQL语句

           //正常sql
      

    // stmt = conn.prepareStatement("insert into student values (null ,'lisi','beijing')");

            //字符串拼接实现sql缺点:麻烦,难以维护;不安全,完全无法避免SQL注入
    

    // stmt = conn.prepareStatement("insert into student values (null,'"+student.getName()+"','"+student.getName()+"')");

            stmt = conn.prepareStatement("insert  into student(name,address) values (?,?)");
    
            //给上述sql的占位符赋值
            stmt.setString(1,student.getName());
            stmt.setString(2,student.getAddress());
    
    
            //增删改都使用该方法
            int i = stmt.executeUpdate();
    
            //i代表这次sql语句执行
            System.out.println(i);
    
    
    
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
    
            //3.关闭资源
    
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    

    public class QueryClass {
    public static void main(String[] args) {

        String url = "jdbc:mysql://localhost:3306/j0302";
        String username = "root";
        String password = "1234";
        String driver = "com.mysql.jdbc.Driver";
    
        //jdbc查询的写法
    
        //jdbc查询的目的:就是为了获取相应对象的list
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
    
        List<Student> list = new ArrayList();
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, username, password);
    
            String sql = "select * from student";
            stmt = conn.prepareStatement(sql);
    
            //执行查询返回一个结果集
    
            rs = stmt.executeQuery();
            //rs.next()用来获取下一行数据
            while (rs.next()){
    
                int sid = rs.getInt("sid");
                System.out.println(sid);
    
                String name = rs.getString("name");
                System.out.println(name);
    
                String address = rs.getString("address");
                System.out.println(address);
    
                //每次循环都要创建一个新的stu 用来存储数据
                Student stu = new Student();
                stu.setId(sid);
                stu.setName(name);
                stu.setAddress(address);
    
                list.add(stu);
    
            }
    
    
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (rs != null) {
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }
    
    }
    

    工具及工程:

    JDBC工程
    链接:https://pan.baidu.com/s/1-aUnJ9udezZufcO8YT38hA
    提取码:2e78

    JDBC优化
    链接:https://pan.baidu.com/s/1OR2zfxPvVgfk5WQZZ-C0Rw
    提取码:zkv3

  • 相关阅读:
    golang操作redis简单例子
    运行gin官方样例
    golang读写yaml
    Pagehelper分页插件Mybatis
    博客园右下角小人动画
    黑客窃取马来西亚用户的银行数据
    微软获得法院命令删除用于攻击乌克兰的域名
    MyEclipse中Lombok的安装及使用
    SVN安装及IDEA集成SVN
    TNS:listener does not currently know of service requested in connect descripto
  • 原文地址:https://www.cnblogs.com/lzb1234/p/10632240.html
Copyright © 2020-2023  润新知