JDBC编程

一.JDBC编程是什么

JDBC,全称为 java database connectivity,即Java数据库连接。
JDBC是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

二.JDBC的工作原理

JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问AP的一种高级抽象,它主要包含一些通用的接口类。

此为JDBC访问数据库的层次结构:在这里插入图片描述

JDBC优势

  • Java语言访问数据库操作完全面向抽象接口编程。
  • 开发数据库应用不用限定在特定数据库厂商的API
  • 程序的可移植性大大增强
  • 适合于超大批量数据的操作,速度快

三.JDBC使用

(一).前提准备

1.首先,我们应该安装好数据库,为简单快捷的安装,个人推荐使用小P(phpstudy_pro)来安装数据库。
操作流程如下:
1)在小皮官网下载好软件,并安装。
官网链接:https://www.xp.cn/
2)打开小皮->软件管理,选择你需要版本的数据库进行安装(个人推荐5.7.26,8.0上的版本可能会遭遇到一些问题,网上解决办法是安装低版本的数据库)
在这里插入图片描述

2.准备数据库驱动包,在官网下载与数据库版本差不多的驱动包。
链接:https://mvnrepository.com/artifact/mysql/mysql-connector-java

打开链接,下滑选择版本(本人使用5.1.40,数据库为5.7.26,可以正常使用)在这里插入图片描述

进入后,点击 jar进行下载在这里插入图片描述
这样,前提工作就做好了。

(二)为项目添加驱动包

1)在Idea上创建一个项目,右键项目新建一个目录,命名为lib
在这里插入图片描述
2)将刚才下载好的驱动包复制到lib文件夹中,在Idea中右键lib,点击Add as Library…。点击OK,完成驱动包导入。
在这里插入图片描述

(三)创建与数据库的连接并进行sql操作

1.实现数据源对象
DataSource dataSource = new MysqlDataSource();

DataSource 是个接口描述了数据从哪里来,数据库的位置,要使用该,接口的方法就需要使用实现该接口的子类

2.设置对象的属性

设置对象的URL,user以及password

((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/a?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("222222");

1)url的设置:依次代码为例 以jdbc为开头,数据库为mysql127.0.0.1为本机的IP地址,3306为接口号(小皮中数据库端口号默认为3306),端口号后接上“/”+要连接的数据库名称,“?”后为参数,'characterEncoding=utf8’指定所处理字符的解码和编码的格式,'useSSL=false’为关闭加密。

总结:格式为:ip地址(描述mysql服务器在那个主机上)+端口号(区分一个主机的应用程序)+数据库名+‘?’+额外参数(解释说明这次数据库的连接)+'&'关闭加密

2)User的设置:root为mysql自带的 管理员用户 权限最大。

3)password设置:输入数据库的密码(我自己设置的为222222,小皮默认为root)。

3.与数据库服务器建立连接
Connection connection= dataSource.getConnection();

注:

在连接中可能遇到形形色色的错误,这时我们应查看报错信息来排查错误。常见的几种报错信息

  • 此为数据库密码错误。

此为数据库密码错误

  • 此为端口号错误

在这里插入图片描述

  • 此为数据库不存在错误

在这里插入图片描述
具体错误,可以根据报错内容推断出,根据问题找解决方法。

4.构建sql语句

例如,在(id int,name varchar(20))的学生表中,添加一个学生。

 String sql="insert into student values(1,'张三')";
 PreparedStatement statement =connection.prepareStatement(sql);

PrapredStatemet :“预编译的语句”:用来解析该语句的准确性
同时注意方法依然是上一个connect对象里的方法,用来编译sql语句同时返回PrapredStatement对象。

5.执行sql语句
 int n=statement.executeUpdate();

通过exectueUpdate()执行代码,将返回一个整型,表示执行的行数,相当于mysql中的在这里插入图片描述
利用整型n接收其返回值,并打印。

System.out.println(n);

完整代码:

public class Main {
    public static void main(String[] args) throws SQLException {
       
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("222222");

        Connection connection= dataSource.getConnection();

        //String sql="insert into student values(?,?)";
        String sql="insert into student values(1,'张三')";
        PreparedStatement statement =connection.prepareStatement(sql);
       

        int n=statement.executeUpdate();
        System.out.println(n);

        statement.close();
        connection.close();
    }
}

除此之外,以上是用来增删改的一系列的操作在最关键的操作是 statement.executeUpdate();
若要进行查询操作则用statement.executeQuery();,且用ResultSet来接收。
代码:ResultSet resultset = statement.executeQuery();
并通过遍历获取表中的信息

while(resultSet.next()){
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }

6.内存释放
statement.close();
connection.close();
resultSet.close();

注:释放顺序与先去使用顺序相反

以上便是全部内容,如有不对,欢迎指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值