Java操作数据库方式一JDBC使用详解

##概述

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。

JDBC由sun公司开发,放在jdk中的sql包下和javax.sql包下。可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

##准备工作

在使用JDBC连接数据库之前,首先要有数据库,数据库要创建表。我的数据库信息如下:

  1. 数据库类型:MySql。
  2. 数据库名字:xia。
  3. 用户名:root。
  4. 密码:root.
  5. 创建数据库表student。
create table student(
       id int primary key auto_increment,
       name varchar(20),
       age int
);

##开发环境

  1. 操作系统:MACOS。
  2. 开发工具:IntelliJ IDEA。
  3. Java版本:jdk1.7。
  4. 使用maven管理jar包。

##正式开发

一,在pom.xml文件中引入MySql的java驱动包

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>

二,得到Connection对象

public static Connection getConnection() {
        try {
            // 1.通过DriverManger注册驱动,注意此时Driver是在com.mysql.jdbc包中
            DriverManager.registerDriver(new Driver());
            /**
             * 2.通过DriverManager获取连接对象
             *
             * jdbc:mysql://:这是固定的写法,表示使用jdbc连接mysql数据库
             * localhost:ip地址,本地可以写成localhost。
             * 3306:mysql的端口号。
             * xia:数据库的名字。
             * 第一个root:mysql的用户名
             * 第二个root:mysql的密码。
             */
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/xia", "root", "root");
            return connection;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

三,插入操作方式1

public static boolean insertStudent1(Student student) {
        try {
            //1,得到Connection对象,
            Connection connection = getConnection();
            //2,通过Connection获取一个操作sql语句的对象Statement
            Statement statement = connection.createStatement();
            //3,获取需要传递的参数
            String name = student.getName();
            int age = student.getAge();
            //4,拼接sql语句
            String sql = "insert into student (name,age) VALUE ('" + name + "'," + age + ")";
            //5,执行sql语句
            statement.execute(sql);
            //6,释放资源
            statement.close();
            connection.close();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

此时就可以向数据库中插入数据,测试代码如下:

        Student student = new Student();
        student.setName("lilei");
        student.setAge(18);
        insertStudent1(student);

注:Student是自定义的Model类,此时Student.java文件的代码略。

四,插入操作方式2

public static boolean insertStudent2(Student student) {
        try {
            //1,得到Connection对象,
            Connection connection = getConnection();
            //2,通过Connection获取一个操作sql语句的对象Statement
            Statement statement = connection.createStatement();
            //3,获取需要传递的参数
            String name = student.getName();
            int age = student.getAge();
            //4,写sql语句,参数使用?占位符
            String sql = "insert into student (name,age) VALUE (?,?)";
            //5,得到PreparedStatement对象
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            //6,通过PreparedStatement对象设置参数
            preparedStatement.setString(1, name);
            preparedStatement.setInt(2, age);
            //7,执行sql语句
            preparedStatement.execute();
            //8,释放资源
            statement.close();
            connection.close();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

五,根据id查找单个对象

public static Student selectStudent(int id) {
        try {
            //1,得到Connection对象,
            Connection connection = getConnection();
            //2,通过Connection获取一个操作sql语句的对象Statement
            Statement statement = connection.createStatement();
            //3,拼接sql语句
            String sql = "select id,name,age from student where id = " + id;
            //4,查询,返回的结果放入ResultSet对象中。
            ResultSet resultSet = statement.executeQuery(sql);
            //5,将游标后移一位
            resultSet.next();
            //6,获取数据
            int studentId = resultSet.getInt(1);//第一行的第一列数据,我们知道是id,也知道是int类型,
            String studentName = resultSet.getString(2);//第二个数据对应name
            int studentAge = resultSet.getInt(3);//第三个数据对应age

            Student student = new Student();
            student.setId(studentId);
            student.setName(studentName);
            student.setAge(studentAge);

            //7,释放资源
            statement.close();
            connection.close();
            return student;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

六,根据其他条件得到对象集合

public static List<Student> selectUserList(int age) {

        try {
            //1,得到Connection对象,
            Connection connection = getConnection();
            //2,通过Connection获取一个操作sql语句的对象Statement
            Statement statement = connection.createStatement();
            //3,拼接sql语句
            String sql = "select id,name,age from student where age = " + age;
            //4,查询,返回的结果放入ResultSet对象中。
            ResultSet resultSet = statement.executeQuery(sql);
            // 5.得到返回的值
            List<Student> studentList = new ArrayList<>();
            while (resultSet.next()) {//resultSet对象可能包含很多行数据,所以要是有while循环。
                int studentId = resultSet.getInt(1);//第一行的第一列数据,我们知道是id,也知道是int类型,
                String studentName = resultSet.getString(2);//第二个数据对应name
                int studentAge = resultSet.getInt(3);//第三个数据对应age
                Student student = new Student();
                student.setId(studentId);
                student.setName(studentName);
                student.setAge(studentAge);
                studentList.add(student);
            }
            //6,释放资源
            statement.close();
            connection.close();
            return studentList;

        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

七,更新操作

public static boolean updateStudent(Student student) {
        try {
            //1,得到Connection对象,
            Connection connection = getConnection();
            //2,通过Connection获取一个操作sql语句的对象Statement
            Statement statement = connection.createStatement();
            //3,获取需要传递的参数
            String name = student.getName();
            int id = student.getId();
            //4,拼接sql语句
            String sql = "update student set name = '"+name+"' WHERE id = " +id;
            //5,执行sql语句
            statement.executeUpdate(sql);
            //6,释放资源
            statement.close();
            connection.close();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

八,删除操作

public static boolean deleteStudent(int id) {
        try {
            //1,得到Connection对象,
            Connection connection = getConnection();
            //2,通过Connection获取一个操作sql语句的对象Statement
            Statement statement = connection.createStatement();
            //3,拼接sql语句
            String sql = "DELETE FROM student WHERE id = " +id;
            //4,执行sql语句
            statement.execute(sql);
            //5,释放资源
            statement.close();
            connection.close();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

##总结

一,使用JDBC进行增删改查操作大体相同,不同点就是sql语句。大体步骤如下:

  1. 首先获取Connection对象。
  2. 然后获取Statement对象。
  3. 然后写sql语句。
  4. 然后执行sql语句。如果是查找操作在执行sql语句后解析数据。
  5. 最后关闭Connection和Statement对象。

二,使用JDBC也有缺点,即每次操作都要创建连接,然后关闭连接创,建连接和关闭连接是非常消耗资源的操作。所以在大型项目中尽量不要采用这种方式。








  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值