关于JDBC的介绍及其相关操作~

一、关于JDBC

JDBC:就是一组类和方法,掌握了JDBC就可以操作所有的数据库

就像在学校可能会遇到“统计同学信息”这样的情况,每个班的班长统计出来的格式都不一样,班主任就约定号一个固定的格式,让各个班班长都按照这个格式来统计

这里的JDBC就相当于这个固定格式

二、JDBC的使用

1、插入操作

前提:

先在MySQL中创建一个java102的数据库,

在java102里创建一个student表,student里包含的类型有id和name

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;// javax.sql  JDBC提供的类和方法都在这个包里,其中DataSource就是其中的一个重要的类(接口)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

 public static void main(String[] args) throws SQLException {//getConnection建立连接失败就会抛出异常
        //1、创建好数据源,相当于描述了菜鸟驿站的位置
        DataSource dataSource=new MysqlDataSource();//DataSource是JDBC自带的接口,MysqlDataSource是来自于下载好的jar包,里面提供的一个实现DataSource接口的类
        //设置数据库所在地址
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        //设置登陆数据库的数据名
        ((MysqlDataSource)dataSource).setUser("root");//都是root
        //设置登陆数据库的密码
        ((MysqlDataSource)dataSource).setPassword("111111");//数据库密码

        //2、让代码和数据库建立连接,相当于到了菜鸟驿站
        Connection connection= dataSource.getConnection();//Connection一定是JDBC的Connection->import java.sql.Connection;

        //3、操作数据库,
        //插入数据
        //构造一个SQL语句
        //在JDBC中构造SQL不必带上;
        //;只是在命令行中用来区分不同的语句,现在是直接在代码中操作
        String sql="insert into student values(1,'张三')";
        //此处光是一个String类型的sql还不行,需要把这个String包装成一个“语句对象”
        PreparedStatement statement=connection.prepareStatement(sql);//把字符串风格的sql转成了一个JDBC里面的对象

        //4、执行SQL,相当于扫码取件
        //SQL里面如果是insert,update,delete,都使用executeUpdate方法
        //SQL里面如果是sekect,则使用executeQuery方法
        //返回值表示这个操作,影响到了几行,就相当于在控制台里输入sql之后,得到的数字
        int ret = statement.executeUpdate();
        System.out.println(ret);

        //5、此时SQL已经执行完毕,还需要释放资源
        statement.close();//后创建的先释放
        connection.close();//先创建的后释放
}

执行之后在MySQL中查看表,发现已经插入进


2、灵活的处理插入操作

因为上面的插入的数据是将一条指定的插入语句写死,每次插入都只能插入一样的,要想实现每次插入的都是可以改变的需要做出如下调整

public static void main(String[] args) throws SQLException {//getConnection建立连接失败就会抛出异常
        

        //1、创建好数据源,相当于描述了菜鸟驿站的位置
        DataSource dataSource=new MysqlDataSource();
        //设置数据库所在地址
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        //设置登陆数据库的数据名
        ((MysqlDataSource)dataSource).setUser("root");//都是root
        //设置登陆数据库的密码
        ((MysqlDataSource)dataSource).setPassword("111111");//数据库密码

        //2、让代码和数据库建立连接,相当于到了菜鸟驿站
        Connection connection= dataSource.getConnection();
        //让用户通过控制台输入一下待插入的数据
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入学号:");
        int id=scanner.nextInt();
        System.out.println("请输入姓名:");
        String name=scanner.next();

        //3、操作数据库,
        String sql="insert into student values(?,?)";
        PreparedStatement statement=connection.prepareStatement(sql);
        //执行替换操作
        statement.setInt(1,id);//下标从1开始计算,将下标为1的?替换为id的值
        statement.setString(2,name);//将下标为2的?替换为name的值
        System.out.println("statement:"+statement);//打印一下,看看拼好的sql长什么样子
        //4、执行SQL,相当于扫码取件
        int ret = statement.executeUpdate();
        System.out.println(ret);

        //5、此时SQL已经执行完毕,还需要释放资源
        statement.close();//后创建的先释放
        connection.close();//先创建的后释放
    }

 执行后手动分别输入要插入的数据


如果想一次插入多条:

 然后再执行替换


3、删除操作

public static void main(String[] args) throws SQLException {
        //删除数据库中的记录
        //让用户输入一个id,根据id来删除
        //1、创建数据源
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false")
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");
        //2、建立连接
        Connection connection=dataSource.getConnection();
        //3、用户输入id
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个要删除的id:");
        int id=scanner.nextInt();

        //4、拼装sql语句
        String sql="delete from student where id=?";
        PreparedStatement statement=connection.prepareStatement(sql);
        statement.setInt(1,id);
        //5、执行sql
        int ret=statement.executeUpdate();
        System.out.println("ret="+ret);
        //6、回收释放资源
        statement.close();
        connection.close();
    }

4、修改操作

public static void main(String[] args) throws SQLException {
        //根据id来修改学生姓名,让用户输入要修改的id,以及对应的修改后的名字
        //1、创建数据源
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");
        //2、和数据源建立连接
        Connection connection=dataSource.getConnection();
        //3、输入信息
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要修改学生id:");
        int id=scanner.nextInt();
        System.out.println("请输入要修改的学生姓名");
        String name=scanner.next();
        //4、拼装sql
        String sql="update student set name=?where id=?";
        PreparedStatement statement=connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);
        System.out.println("ststement:"+statement);

        //5、执行sql
        int ret=statement.executeUpdate();
        System.out.println("ret="+ret);
        //6、回收资源
        statement.close();
        connection.close();

    }

5、查找操作(需要对结果进行遍历

public static void main(String[] args) throws SQLException {
        //1、创建数据源
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");
        //2、建立连接
        Connection connection=dataSource.getConnection();
        //3、拼装sql
        String sql="select*from student";
        PreparedStatement statement=connection.prepareStatement(sql);

        //4、执行sql,对于查询操作使用executeQuery()
        //查询操作返回的不是一个int,是一个临时表
        //使用resultSet表示这个表
        ResultSet resultSet=statement.executeQuery();

        //5、遍历结果集合(返回的临时表),先获取每一行,再获取到杂贺一航中的若干列
        // next方法表示获取到一行记录,同时把光标往后移一行
        //如果遍历到表的结束位置,此处的naxt直接返回false
        /*+------+--------+
          | id   | name   |
          +------+--------+
          |    2 | 赵六   |
          |    3 | dd     |
          +------+--------+
        */
        while(resultSet.next()){//获取每一行
            //针对这一行获取其中的列
            int id=resultSet.getInt("id");//获取整数的列
            String name=resultSet.getString("name");//获取字符串这样的列
            System.out.println("id="+id+",name="+name);
        }
        //6、释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值