数据库(MySQL)JDBC编程

 日升时奋斗,日落时自省

目录

一、JDBC编程

 1、API

 2、JDBC使用

 2.1、驱动包

 3、JDBC代码编程

 3.1、增(删改)

 3.2、查询


一、JDBC编程

无论是前面学习的MySQL初阶操作还是进阶操作看似都是直接能在命令行上敲出来的,但是实际上又不是这么敲的,手动敲的话数量大了,效率就很慢了

绝大多数的SQL都是通过自动执行的

这这种自动化执行就需要编译语言来操作数据库了

mysql客户端(mysql自带的黑框框)>> 通过网络来访问 >>mysql服务器

这就是开始直接使用mysql客户端进行操作给服务器发送信息

自己写mysql客户端(C,C++,java,Python)>> mysql服务器

编译语言操作数据库服务器

 这里为什么说我们能写一个数据库客户端,因为各种数据库都提供了一系列的API(下面会详细说API是做什么的),可以让咱们比较方便实现这个数据库客户端。

这里会有友友问是不是数据库服务器也可以自己写一个,非常难写

数据库服务器涉及的东西很多(前面在事务的时候就提到了储存引擎,索引对应的数据结构,内部数据结构如何控制组织数据,存储数据,SQL执行引擎,代码优化等

1、API

所以MySQL也提供了API(Application Programming interface 应用程序编程接口)

API就像是一个驱动,API提供了方法,类等,使用过java或者是C等一些编译语言的话,这个也好解释,里面使用的方法,可以编程的语句就是API

API实例:

(1)java的标准库,就会给我们提供一些API,(实用:Scanner,集合类,方法、组类)

(2)操作系统,提供的API操作硬盘访问的文件,访问内存内容,重置网卡,包括模拟鼠标时间,模拟键盘,都是以类或者方法提供给我们

(3)数据库(MySQL)同样有API为了提供驱动完成操作数据库,完成各种数据库的增删改查操作

一个现实中的例子:人生活在社会上,但是需要使用不同功能的东西来完成生活,澡堂就像是个API提供洗澡的功能(这个应该很好理解)

总述:顾名思义 “ 应用程序编程接口” 能给你提供某些功能或者服务

MYSQL中的API就是为了让我们实现客户端的 (有官方维护,直属于Oracle)

MYSQL的API是C语言风格的,但是不能只有这一个版本的,因为MYSQL使用范围很广泛,就不能只有这个一个语言的版本,也提供了多个其他语言版本的API,其他版本的API本质上还是调用了C的API(跨语言调用)

但是数据库不是只有MySQL一种,有多种数据库Oracle,SQLserver,SOLite等多种数据库都会提供API,这下就造成了一个很不友好的局面,就是每个数据库都有自己的API,那岂不是使用需要注意的东西就要把程序员坑没了

在java中就不一样了,这些数据库的API统一起来,JDBC就诞生了,JDBC这套API相当于被加入了java的标准库(记住是相当于,不是真的在里面,这里只是说是共生关系),为什么会这样,就是因为java后期的发展很快,一直都趋于榜前列,影响力很大,以java为自身作为标准,数据库都提供了能够适应JDBC相关的“驱动包”

既然是以一个标准来定义,API如何使用都成为定性

(1)JDBC优点:无论是那个数据库,操作性代码大体不变。(JDBC屏蔽了不同数据库带来的API差异,减少了程序员的劳动量,对于java语言益处多多)

(2)缺点:JDBC只能适用于java数据库连接,是面向对象的,出了这个语言就不能了,Windows自带的一个ODBC提供API代表开放式数据库连接,是程序性的

当然这里在java数据库连接中,建议使用JDBC对口连接,性能针对java更快,ODBC更复杂,难学,使用需要内部转换,效率低。

 2、JDBC使用

2.1、驱动包

这个是一个驱动包(中央仓库有,数据库厂商提供的),我们是需要把它放在java中的目录里

 驱动包在中央仓库下载,应用商店即可找到(这里附一个连接,直接点开就行)

https://mvnrepository.com/

以下开始画面操作

这里点这个热气球图片,比较简单,照这点就行,点完之后右下角这个skip就会变成next点击就进去了。

 接下来有很多版本,这里我选择的是5版本,因为我的mysql是5版本的

 自己要找好下载的文件路径哈



 打开idea 

 然后步骤如下

如下就算是JDBC驱动包,导入结束 

 

 这个驱动包里有很多.class文件,看着多其实不难,都是固定的东西(想看了可以解压缩文件看看,这里就不在截图展示了)

3、JDBC代码编程

3.1、增(删改)

JDBC中很多API都是接口(interface)

 new 一个驱动包里的类,其实和java的东西都是一样的模式,只是这里是创建数据库的,一个能够连接数据库的类,那还需要知道服务器的地址涉及到那个库,用户和密码

(1)创建数据源(重要步骤)

 注解:每个人的电脑ip地址可能不一样,这里对127.0.0.1解释统一写这个是没有问题的,特殊的ip地址被叫做“ 环回ip ”表示主机自己(本体)

使用条件:你的服务器和你的jdbc在同一个电脑上

 上面的数据源操作创建好了,只是描述了服务器在哪,还没有连接上,更没进行访问

(2)连接操作(重要步骤)

连接(Connection) 就是客户端和那个服务器连接,就可以进行通信了

 (3)写SQL语句(重要步骤)

 (4)SQL语句预处理(重要步骤)

 (5)显示影响行数

 显示后打印就可以,这里其实看个人需求

 (6)关闭连接,数据源或者集合

 注意:先进行的连接,连接后预处理sql语句,但是关闭的时候是先关闭预处理PreparedStatement,后关闭连接

 jdbc使用过程中会看见两种不同的风格的代码

一种:DriverManager

使用的时候,需要借助反射,对我们并不友好,反射不属于常规编程手段,特殊情况使用

另一种:DataSource 

只有相比才能知道的DataSource比较香的,内置了数据量连接池,可以重复利用连接

 这里简单提示一下:可以使用原始代码进行书写sql语句,但是不推荐,更推荐通配符书写,可读性更高

 

 插入代码:(大体的框架都是一样的,可以尝试删或者改)

public class JDBC_CSDN_Demo {
    public static void main(String[] args) throws SQLException {
        //1.先创建DataSource 数据库,描述Mysql数据库在哪
        DataSource dataSource=new MysqlDataSource(); //创建一个数据源
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/class?charactorEncoding=utf8&&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("输入自己的数据库密码");
        //2.连接操作
        Connection connection= dataSource.getConnection();
        //3.操控台,输入信息
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入学号:");
        int id =scanner.nextInt();
        System.out.println("请输入姓名:");
        String name=scanner.next();
        //4.构造SQL语句
        //String sql="insert into teacher values("+ id +", '" + name + "')";
        String sql="insert into teacher values(?,?)";
        //5.mysql 需要一个特定的对象,来描述SQl情况
        PreparedStatement statement=connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        //影响的行数
        int result= statement.executeUpdate();
        System.out.println(result);
        //6.关闭连接
        statement.close();
        connection.close();
    }
}

 3.2、查询

查询的要点:

利用结果集 将所有的行提取出来在打印 

关键代码:ResultSet resultSet=statement.executeQuery();    主要目的是获得结果集

只有用executeQuery才能获得结果集 

 减少了很多的cmd代码,代码自动运行

这里sql语句与cmd上没有什么太大区别,where 条件都可以使用

当然cmd不是说就不用了,只是说大批量数据时就需要 代码自动处理 其实还是很常用的,所以基础的操作我们得会(不能忘)

(1)实际上JDBC 可能也不一定会用的上,因为JDBC代码还是比较多的,框架会解决代码繁琐的问题

(2)因此一些库或者框架都会对JDBC进行封装, 使用更便捷。

(3)我们通过了解这些框架的底层也就是JDBC就能够 深入框架的使用,框架的革新比较快,不如JDBC耐用,只要我们知道JDBC就能在这个基础上学习框架,更容易,核心构架

 查询代码:

public class JDBC_CSDN_Select {
    //查询上有特殊的步骤
    public static void main(String[] args) throws SQLException {
        //首先还是创建DataSource数据库,描述一下数据库在哪里
        DataSource dataSource=new MysqlDataSource();
        //数据库的地址 ,用户, 密码
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/class?charactorEncoding=utf8&&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("输入自己的数据库密码");
        //开始连接
        Connection connection=dataSource.getConnection();
        //剩下的还是写sql语句
        String sql ="select * from teacher ";
        //预处理
        PreparedStatement statement=connection.prepareStatement(sql);
        //查询需要结果集进行接受
        ResultSet resultSet=statement.executeQuery();
        while(resultSet.next()) {
            //这里的next就相当于是一个光标 最开始在一行的上面
            //光标每次都会到下一个位置
            //获得就是 getInt getStirng getCharactor 等等后缀都是对应的
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + ":" + name);
        }
    }
}

如果有误,留言提示,看到后我也会给予自我学习和回答问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值