爪哇后端初体验--从JDBC开始

1. 导语

其实我一直在想把这jdbc放在sql中还是java中,最后还是选在放在java中,毕竟它确实是java代码。通过这篇博客,可以学习到以下几个问题

  1. 什么是JDBC?
  2. JDBC原理
  3. JDBC核心类(接口)介绍
  4. 编写一个JDBC例子

2. 学习

2.1 什么是JDBC

jdbc的全称是 java database connect ,顾名思义java数据库连接,其实就是通过我们java代码来操作sql语句,对数据库的增删改查。

2.2 原理

我们知道java代码如果需要连接数据库是需要方法和接口的,也就是API,但是数据库的种类有太多了,常见的比如mysql、Oracle,但是因为各个数据库的差异太大,一套API实现不了,又不能对每一种数据库提供一套API(能想到这有多么蛋疼),所以他们决定定一套规范,然后接口由各个数据库厂家根据这个规范提供,这个规范其实就是协议标准,也就是JDBC,而遵循JDBC规范提供的接口就是驱动。


这里写图片描述

注意:JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

2.3 核心类和接口

在分析核心类和接口之前,先看看使用jdbc的步骤

1.注册驱动。主要是让java代码知道,想要连接的是哪一种数据库
2.获取连接。连接上数据库
3.向数据库发送sql语句
4.接受发送成功后返回的结果
5.关闭核心类接口的对象

上述操作涉及到的类和接口主要有:
1.注册驱动的 Class.from(“”)
2.获取连接的 DriverManager
3.发送sql的 Statement
4.保存结果集的 ResultSet

2.4 例子

这里我使用的开发工具是idea,从android studio转过来站在鄙视链的顶端怎么还会去用eclipse呢(哈哈 别打我)
首先需要准备好jdbc需要的jar包,前面说了各个数据库厂家都会提供驱动API,就在这个jar包中,所以要找就去mysql中去找
(mysql-connector-java-5.1.45.zip)
下载完然后解压出来,在idea工具中添加进去,具体步骤这里简单说了 不是本文的重点

File–>Project Structure–>Module–>Dependencies–>右边绿色加号(和as是一样的,选第一个)

然后找到我们下载jar的位置,添加进去即可。
如果这里没有添加运行会报如下错误
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
下载地址 下载解压即可


A:注册驱动

Class.forName("com.mysql.jdbc.Driver");

我们使用的数据库是mysql,所以这里填mysql,这就是注册驱动,如果要导包,导入sql的包不要选择jdbc的包。
B:连接数据库

      connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");

DriverManager.getConnection(x,y,z)中的三个参数含义分别是
x : 代表 url ,和我们连接接口一个道理也需要地址,只不过这里的地址协议不是http的,而是jdbc的,它的协议规范是

jdbc:数据库种类://数据库位置:端口/数据库名称

注意:如果要导包 这里也是导sql包而不是jdbc。上面的数据库位置可以是ip地址也可以是域名
y : 用户名
z : 密码

C:获取操作sql语句工具类Statement
在上面一步操作中,如果我们获取到connection对象,则说名数据库连接成功,则需要再获取到操作sql语句的工具类Statement

 statement = connection.createStatement();

Statement是用来向数据库发送要执行的SQL语句的!

D:发送sql语句
这里比较简单,我操作一个查询语句,表我已经准备好了


这里写图片描述

            String sql = "select * from my_movie";
            resultSet = statement.executeQuery(sql);


E:循环遍历结果集
发现没,在执行statement.executeQuery(sql)后会返回一个resultSet结果集,它其实就是如上一张表,相信操作过数据库的都知道,这差不多。不断的调用resultSet.next()方法来移动行数,当第一次移动时就会在第一行,第一行是有数据的,只要通过get方法就可以拿到对应的数据,这比较简答

  while (resultSet.next()){
                System.out.println("movieName:"+resultSet.getString("mName")+"    moviePrice:"+resultSet.getDouble("mPrice")+"    movieDir:"+resultSet.getString("mDirector")+"    movieTime:"+resultSet.getString("mShowDate")+"   ");
            }

上面是查,当然也可以通过statement来增删改,方法是executeUpdate(String sql),但是一般我们使用的比较少,但是要注意如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数。

F:关闭
和io流一样,在运行完后需要对这些对象进行关闭

               if(connection != null){
                    connection.close();
                }
                if(statement != null){
                    statement.close();
                }
                if(resultSet != null){
                    resultSet.close();
                }



运行出来的代码如下图


这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值