JDBC之java连接mysql数据库的实现

JDBC是指java database connectivity,java程序连接数据数据库规范,或者称之为实现java程序连接数据库的接口类
如果要实现java连接数据库成功,首先要先到mysql的开发商官网下载实现jdbc接口的实现类的jar包,这个实现类也成为驱动
JDBC的核心类有四个:①DriverManagerment:驱动管理类
②Connection 连接类
③Statement:用来执行sq语句的类
④ResultSet:结果集类:用来记录数据库的数据反馈
JDBC实现连接的步骤大致可以分为:
1.注册数据库对应的驱动
2.通过驱动管理类来获取和数据库的连接
3.获取执行mysql语句的statement类的对象,并得到数据库反馈的结果集
4.处理返回的结果集
5.关闭资源
JDBC实现连接的具体过程:
1️⃣ 第一步:注册驱动:注册驱动的方法有两种:
第一种:用驱动管理类DriverManager来注册驱动
DriverManager.registerDriver(new Driver());

第一种方法是有缺陷的,因为在驱动类Driver的内容有一块静态代码块,静态代码块中实现了驱动的注册;
所以当我们再用这种方法注册,实际上对驱动注册了两次
第二种方法:因为Driver类中的静态代码块中实现了注册驱动,所以我们加载一下Driver类就可以了

Class.forName("com.mysql.jdbc.Driver");//将Driver类名加载到内存中,类名要用全限定类名(路径+类名)

2️⃣ 第二步:建立连接:建立连接一共有三种方式:
例如:我们和用户名是root,密码是123456的数据库school建立连接
第一种方法:

String strUrl = "jdbc:mysql://localhost:3306/school";
Connection connection= DriverManager.getConnection(strUrl,"root","123456");

第二种方法:

String strUrl = "jdbc:mysql://localhost:3306/myjdbc?user=root&password='123456'";//用get请求的链接形式将用户名和密码一块放到链接中
Connection connection= DriverManager.getConnection(strUrl,"root","123456");

第三种方法:

Properties info =new Properties();//继承hashMap类,向对象中添加值继承hashMap类的put(key,value);    info.put("user", "root");
info.put("password", "123456");
Connection connection = DriverManager.getConnection(strUrl, info);

3️⃣ 第三步:获得运行sql语句的Statement类的对象:这一步一共有两种方式
例如:我们查询一下student表中的数据
方法一:用statement类来执行sql语句

String sql= "select * from student";
Statement statement = Connection.createStatement();//获得statement类的对象
ResultSet resultSet = statement.executeQuery(sql);//获得结果集

在获得结果集的时候根据不同的sql语句指令分为两种情况:
1.当sql语句指令是查询数据的时候:使用方法statement.executeQuery(sql)来获得结果集
2.当sql语句指令是增删修改数据的时候,使用方法statement.executeUpdate(sql);返回的结果是int类型的值,值代表修改数据的行数
方法二:使用PreparedStatement类的对象,当mysql语句中含有变量的时候,可以先使用PreparedStatement的对象先对mysql语句指令先进行预编译
⚠️⚠️预编译的目的是为了防止在给sql语句添加变量后造成sql语句的指令发生改变,这样使用statement对象来编译sql语句就会产生错误的反馈信息.
preparedStatement类的对象先进行预编译,然后再对sql语句中的变量进行赋值操作,保证sql语句的指令不会改变
⚠️⚠️在对sql语句进行变量赋值的时候,是根据sql语句中❓的下标来赋值的,下标是从1开始的

String sql= "select name=?,password=? from student";
PreparedState pState = Connection.PrepareStatement(sql);
pState.setString(1,nameValue);//设置sql语句中的name
pState.setString(2,passwordValue);设置sql语句中的password
ResultSet resultSet = pState.executeQuery;//获取结果集

4️⃣ 处理数据库反馈过来的结果集:对结果集的处理的方法大致分为两种
例如我们查询student表中的数据,student表中的字段有id ,name,password
第一种方法:通过下标来实现:

//resultSet.next()的作用是来检测下一行数据是否存在,如果存在就返回true
while(resultSet.next())
    {
        //注意查询数据库的时候,索引从1开始,代表是第一个字段的值
        //在结果集中获取数据的索引要和sql语句中的查询语句中的字段对应上
        System.out.println(resultSet.getObject(1));//获取的是本行数据中的id的值
        System.out.println(resultSet.getObject(2));//获取的是本行数据中的name值
        System.out.println(resultSet.getObject(3));//获取的是本行数据中的password值
    }

第二种方式是直接透过字段名来处理的

while(resultSet.next())
    {
        System.out.println(resultSet.getObject("id"));//获取的是本行数据中的id的值
        System.out.println(resultSet.getObject("name"));//获取的是本行数据中的name值
        System.out.println(resultSet.getObject("password"));//获取的是本行数据中的password值
    }

5️⃣第五步:关闭资源:将我们前面创建的connection,statement,resultSet对象关闭掉

connection.close();
statement.close();
resultSet.close();

对于JDBC连接过程中异常的处理:
在连接数据库过程中产生的异常,我们都必须要抛出一个运行时异常,将连接切断,将程序停掉
例如:我们在关闭资源resultSet的时候的异常处理:

//判断是否为空,是为了防止出现空指针
if (resultSet!=null)
        {
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                //抛出运行时异常,切断数据库连接,将程序停掉
                throw new RuntimeException();
            }
            //置为null是为了能更快地进行垃圾回收
            resultSet = null;
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值