环境装好了,我们来学JDBC编程;数据库连接了,我来教操作~

本文详细介绍了JDBC(Java Database Connectivity)的概念,包括其全称和作用,并展示了如何在Java环境中配置MySQL驱动,使用DataSource和PreparedStatement进行数据库操作。讲解了创建数据源、设置数据库连接信息、执行SQL语句及释放资源的过程,同时提及了DataSource与DriverManager的区别,以及数据库操作中的安全注意事项。文章还讨论了数据库Statement和PreparedStatement的联系与差异,以及数据库连接的两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

JDBC是什么?

所需环境

将下载好的jar包导入到项目中

现在来用Java代码操作MySQL~

1.创建数据源对象,数据源对象就描述了要访问的数据库是什么,在哪?

 2.找地址(URL体现出数据库服务器的位置,以及名字)

3.设置打开数据库的钥匙

4.访问连接

5.用户输入

6.执行sql语句

7.释放关闭相关资源

面试题:

结语:


JDBC是什么?

        全称:Java Database Connectivity(Java数据库连接),是由标准库提供的一套API,使得Java可以通过这些接口实现与数据库的连接,为多种关系数据库提供同一访问。


所需环境

        JDBC在使用的时候,需要下载并导入对应的数据库的驱动包(以下使用Java代码来操作MySQL),建议大家去官网(

)找到对应的jar包,以下为官网链接

Maven Repository: Search/Browse/Explore (mvnrepository.com)


将下载好的jar包导入到项目中

1.创建一个与.idea同级的包,起个名字叫:“lib”~;

2. 将jar包拷贝到lib中

3.右击lib标记成存放库文件(jar包)的目录,然后,IDEA就可以识别目录中的jar包

 这里可以看到jar包可以展开了,说明IDEA可以对其进行识别

 以上就是准备过程~


现在来用Java代码操作MySQL~

1.创建数据源对象,数据源对象就描述了要访问的数据库是什么,在哪?

//来自标准库JDBC的接口
import javax.sql.DataSource;
//来自MySQL的驱动包(jar包)
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;


DataSource dataSource = new MysqlDataSource();

        解释和分析:DataSource描述了在哪里能找到数据库数据,其实也可以使用DriverManager,但是更推荐DataSource,因为DriverManager每次getConnection都需要重新建立连接,而DataSource是内置连接池,类似String的字符串常量池,连接复用,提高效率

 2.找地址(URL体现出数据库服务器的位置,以及名字)

((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/user?characterEncoding=utf8&useSSL=false");

解释和分析:

 jdbc:mysql是协议名称;

//127.0.0.1是IP地址,描述了网络上一个主机的位置,127.0.0.1是一个特殊的地址,无论IP是什么,都可以用127.0.0.1表示自己;

3306是端口号,用来区分主机上的不同应用程序,在安装数据库时,其中一个环节就是配置端口号,默认就是3306;

user是要访问的数据库的名字(通过create database创建的);

characterEncoding=utf8是刻划断使用的字符集,要和服务器那边一致,所以这里使用utf8;

useSSL=false这里表示不加密;

3.设置打开数据库的钥匙

((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");

        解释和分析:输入登录用户名,和密码,用户名一般同一是root,这时MySQL自带的,密码就是安装数据库时设置的密码

4.访问连接

 //建立连接,注意这里要抛异常
 Connection connection = dataSource.getConnection();

解释和分析:和数据库服务器连接,再进行后续操作

5.用户输入

        //通过用户输入来改变数据库中的值a
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入员工ID:");
        int ID = scanner.nextInt();
        System.out.println("请输入员工姓名:");
        String name = scanner.next();
        //执行构造的sql语句
        // ? 是一个占位符,只是占个位置,后面会被替换成其他的东西
        String sql = "insert into staff values(?, ?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        //1 2 数字表示占位符下标,默认从1开始,set方法是一个系列:setXXX(XXX表示类型)
        statement.setInt(1, ID);
        statement.setString(2, name);
        System.out.println(statement);

解释和分析:通过用户输入数据来确定插入的值,注意这里最好不要用字符串拼接的方式:1.代码很乱;2.容易引发SQL注入漏洞——被黑客攻击 

6.执行sql语句

        //执行sql,方法有两种:
        //executeUpdate 对应插入删除修改语句. 返回值表示这次 SQL 操作影响到的行数.
        //executeQuery  对应查询语句. 返回值则是返回的临时表数据.
        int n = statement.executeUpdate();
        System.out.println("n = " + n);

7.释放关闭相关资源

//最后关闭释放相关资源(注意,先创建的后释放,后创建的先释放)
statement.close();
connection.close();

解释和分析:

注意要先创建的后释放,后创建的先释放!

问题:为什么要释放?new一个对象要消耗空间资源,为什么以前没有释放过?

那个是Java内置的GC机制,帮咱释放了,但只是能回收对象,也不是万能的;


面试题:

 1.数据库Statement和PreparedStatement有什么联系和区别?

联系:PreparedStatement继承自Statement,都是接口;

区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高;

2.数据库连接有哪些方式?分别有什么区别

       1.通过DriverManager(驱动管理类)的静态方法获取;

        2.通过DataSource(数据源)对象获取;

        区别:DriverManager每次getConnection都需要重新建立连接,而DataSource是内置连接池,类似String的字符串常量池,连接复用,提高效率;


结语:

        这里基于JCBC写的代码本质上是一个MySQL客户端,未来工作中大部分的数据库操作,都是通过代码来完成的;实际开发中,很少会直接使用JDBC,代码比较啰嗦,实际开发中会用到一些库/框架 简化这里的数据库操作(MyBatis),各种库和框架本质上又是对JDBC进行的封装;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值