由浅到深的JDBC

6 篇文章 0 订阅
1 篇文章 0 订阅
大三学了那么久的java的JDBC一直没怎么用得上,今年有幸在一家公司实习接触了
一些项目总算是有那么点点明白了所谓的接口JDBC到底是怎么一回事的了

有时候不一定得很会用,那种只封装了几个工具类的一眼就能看出来 啊!这玩意儿是JDBC代码!
现在的开发更多的是Mybatis,Hibernate或者Spring Data(个人觉得Spring Data更方便因为用得更多),但是尽管用了很多不同的方法框架去完成项目其实都可以理解为在JDBC上封装了一层嘛,至少我是这么认为的

JDBC基础

1、什么是JDBC?

神——问答:什么是JDBC?
答:接口、API,可以连接数据库可以执行SQL语句的java API,最明显的就是带有interface的类,泛指供别人调用的方法或者函数

public interface Interface1{

}

接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

接口只是一种形式,接口自身不能做任何事,因为它的存在就像是一个集合,一个抽象方法的集合,让别的类去继承。

在我们写好接口之后为了让某类能够遵循接口的规则去使用,就会使用到一个关键字—>implements 关键字

class Class implements Interface1,[...]{

}

值得注意的是:一个类可以遵循多个接口,但是不能够实现接口中的抽象方法。

1、1 什么时候使用接口?

  • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么就使用抽象类
  • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

2、上文提到了数据库,那就不得不讨论一下数据库跟JDBC的关系

我们知道数据库是有它的图形界面的,通过这个就可以在里面执行一些相关操作,那么JDBC的作用就是

  • 总所周知数据库里的数据是给程序员用的,作为java程序员当然得用Java语言去链接访问所需得数据库
  • 按理来说市面上有很多家数据库商,这就以至于每一家得厂商都会有属于自家产品得API,这样的话每一个我们都得去学习API的使用。sun公司为了简化给程序员减轻压力特意定义了一个接口,JDBC接口
  • 这样一来就简化成了—>管你什么数据库我都只在我的JDBC上操作,至于不同的数据库只需要下载相对应的驱动包就行了,反正接口就那一个。

2、1 几个必掌握的接口

  • Connection
  • Statement
  • ResultSet

Connection:

连接数据库的第一步,获取链接Connection
与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果

2、2 链接数据库方法

①导入MySQL驱动包(这里以MySQL为例)
②装载数据库驱动程序
③获取到与数据库连接
④获取可执行SQL语句的对象
⑤执行SQL语句
⑥关闭连接

Connection connection = null;
try{
	Class.forName("com.mysql.jdbc.Driver");
	//获取对象
	connection = DriverManager.getConnection("jdbc:mysql://localhost:8081/HYF","root","root");
	//获取执行sql语句的对象
	statement = connection.createStatement();
	//执行sql语句拿到结果集
	resultSet = statement.executeQuery("SELECT * FROM user");
	//遍历结果得到数据
	while(resultSet.next()){
		System.out.println(resultSet.getString(1));
		System.out.println(resultSet.getString(2));
	}
}catch(SQLException e) {
	e.printStackTrace();
}catch(ClassNotFoundException e){
	e.printStackTrace();
}finally{
	/*
    * 关闭资源,后调用的先关闭
    * 关闭之前,要判断对象是否存在
    * */
    if (resultSet != null) {
        try {
            resultSet.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (statement != null) {
        try {
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

当然我的这个方法不一定是最简洁的,还有更好的方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值